version 1.28, 2001/01/02 16:03:14
|
version 1.31, 2001/01/02 22:58:46
|
Line 81 $chome='';
|
Line 81 $chome='';
|
$cnum=''; |
$cnum=''; |
$cdom=''; |
$cdom=''; |
$cid=''; |
$cid=''; |
|
$cfn=''; |
|
|
# symb |
# symb |
|
|
Line 495 sub getfilename {
|
Line 496 sub getfilename {
|
my $safeeval=shift; |
my $safeeval=shift; |
return $safeeval->reval('$filename'); |
return $safeeval->reval('$filename'); |
} |
} |
|
|
# --------------------------------------------------------------- Get course ID |
# --------------------------------------------------------------- Get course ID |
|
|
sub getcid { |
sub getcid { |
Line 502 sub getcid {
|
Line 504 sub getcid {
|
return $safeeval->reval('$cid'); |
return $safeeval->reval('$cid'); |
} |
} |
|
|
|
# --------------------------------------------------------- Get course filename |
|
|
|
sub getcfn { |
|
my $safeeval=shift; |
|
return $safeeval->reval('$cfn'); |
|
} |
|
|
# ----------------------------------------------------------- Get course number |
# ----------------------------------------------------------- Get course number |
|
|
sub getcnum { |
sub getcnum { |
Line 767 sub makenewsheet {
|
Line 776 sub makenewsheet {
|
my ($uname,$udom,$stype,$usymb)=@_; |
my ($uname,$udom,$stype,$usymb)=@_; |
my $safeeval=initsheet(); |
my $safeeval=initsheet(); |
$safeeval->reval( |
$safeeval->reval( |
'$uname='.$uname. |
'$uname="'.$uname. |
';$udom='.$udom. |
'";$udom="'.$udom. |
';$sheettype='.$stype. |
'";$uhome="'.&Apache::lonnet::homeserver($uname,$udom). |
';$usymb='.$usymb. |
'";$sheettype="'.$stype. |
';$cid='.$ENV{'request.course.id'}. |
'";$usymb="'.$usymb. |
';$cnum='.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}. |
'";$csec="'.&Apache::lonnet::usection($udom,$uname, |
';$cdom='.$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}. |
$ENV{'request.course.id'}). |
';$chome='.$ENV{'course.'.$ENV{'request.course.id'}.'.home'}.';'); |
'";$cid="'.$ENV{'request.course.id'}. |
|
'";$cfn="'.$ENV{'request.course.fn'}. |
|
'";$cnum="'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}. |
|
'";$cdom="'.$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}. |
|
'";$chome="'.$ENV{'course.'.$ENV{'request.course.id'}.'.home'}.'";'); |
return $safeeval; |
return $safeeval; |
} |
} |
|
|
Line 804 sub writesheet {
|
Line 817 sub writesheet {
|
$sheetdata,$chome); |
$sheetdata,$chome); |
if ($reply eq 'ok') { |
if ($reply eq 'ok') { |
$reply=&Apache::lonnet::reply('put:'.$cdom.':'.$cnum.':'. |
$reply=&Apache::lonnet::reply('put:'.$cdom.':'.$cnum.':'. |
&stype.'_spreadsheets:'. |
$stype.'_spreadsheets:'. |
&Apache::lonnet::escape($fn).'='.$ENV{'user.name'}, |
&Apache::lonnet::escape($fn).'='.$ENV{'user.name'}, |
$chome); |
$chome); |
if ($reply eq 'ok') { |
if ($reply eq 'ok') { |
Line 870 sub tmpread {
|
Line 883 sub tmpread {
|
# ================================================================== Parameters |
# ================================================================== Parameters |
# -------------------------------------------- Figure out a cascading parameter |
# -------------------------------------------- Figure out a cascading parameter |
# |
# |
|
# For this function to work |
|
# |
|
# * parmhash needs to be tied |
|
# * courseopt and useropt need to be initialized for this user and course |
|
# |
|
|
sub parmval { |
sub parmval { |
my ($what,$safeeval)=@_; |
my ($what,$safeeval)=@_; |
Line 890 sub parmval {
|
Line 908 sub parmval {
|
|
|
my $symbparm=$symb.'.'.$what; |
my $symbparm=$symb.'.'.$what; |
my $mapparm=$mapname.'___(all).'.$what; |
my $mapparm=$mapname.'___(all).'.$what; |
my $usercourseprefix=$cid.'_'.$uname.'_'.$udom; |
my $usercourseprefix=$uname.'_'.$udom.'_'.$cid; |
|
|
my $seclevel= |
my $seclevel= |
$usercourseprefix.'.['. |
$usercourseprefix.'.['. |
Line 1133 sub updatestudentassesssheet {
|
Line 1151 sub updatestudentassesssheet {
|
|
|
# ------------------------------------------------ Load data for one assessment |
# ------------------------------------------------ Load data for one assessment |
|
|
sub rowazstudent { |
sub loadstudent { |
my $safeeval=shift; |
my $safeeval=shift; |
my %c=(); |
my %c=(); |
my %f=&getformulas($safeeval); |
my %f=&getformulas($safeeval); |
Line 1141 sub rowazstudent {
|
Line 1159 sub rowazstudent {
|
if ($_=~/^A(\d+)/) { |
if ($_=~/^A(\d+)/) { |
my $row=$1; |
my $row=$1; |
unless ($f{$_}=~/^\!/) { |
unless ($f{$_}=~/^\!/) { |
my @assessdata=split(/\_\_\_\;\_\_\_/, |
my @assessdata=&exportsheet(&getuname($safeeval), |
&Apache::lonnet::ssi( |
&getudom($safeeval), |
'/adm/assesscalc',('utarget' => 'export', |
'assesscalc',$f{$_}); |
'uname' => $uname, |
|
'udom' => $udom, |
|
'usymb' => $f{$_}))); |
|
my $index=0; |
my $index=0; |
map { |
map { |
if ($assessdata[$index]) { |
if ($assessdata[$index]) { |
Line 1167 sub rowazstudent {
|
Line 1182 sub rowazstudent {
|
|
|
# --------------------------------------------------- Load data for one student |
# --------------------------------------------------- Load data for one student |
|
|
sub rowazclass { |
sub loadcourse { |
my $safeeval=shift; |
my $safeeval=shift; |
my %c=(); |
my %c=(); |
my %f=&getformulas($safeeval); |
my %f=&getformulas($safeeval); |
map { |
map { |
if ($_=~/^A(\d+)/) { |
if ($_=~/^A(\d+)/) { |
my $row=$1; |
my $row=$1; |
unless ($f{$_}=~/^\!/) { |
unless (($f{$_}=~/^\!/) |
my ($tname,$tdom)=split(/\:/,$_); |
|
my @assessdata=split(/\_\_\_\;\_\_\_/, |
|| ($row>25)) |
&Apache::lonnet::ssi( |
|
'/adm/studentcalc',('utarget' => 'export', |
{ |
'uname' => $tname, |
my @studentdata=&exportsheet(&getuname($safeeval), |
'udom' => $tdom))); |
&getudom($safeeval), |
|
'studentcalc'); |
my $index=0; |
my $index=0; |
map { |
map { |
if ($assessdata[$index]) { |
if ($studentdata[$index]) { |
$c{$_.$row}=$assessdata[$index]; |
$c{$_.$row}=$studentdata[$index]; |
unless ($_ eq 'A') { |
unless ($_ eq 'A') { |
$f{$_.$row}='import'; |
$f{$_.$row}='import'; |
} |
} |
Line 1201 sub rowazclass {
|
Line 1217 sub rowazclass {
|
|
|
# ------------------------------------------------ Load data for one assessment |
# ------------------------------------------------ Load data for one assessment |
|
|
sub rowaassess { |
sub loadassessment { |
my ($safeeval,$symb)=@_; |
my $safeeval=shift; |
my $uhome=&Apache::lonnet::homeserver($uname,$udom); |
|
|
my $uhome=&getuhome($safeeval); |
|
my $uname=&getuname($safeeval); |
|
my $udom=&getudom($safeeval); |
|
my $symb=&getusymb($safeeval); |
|
my $cid=&getcid($safeeval); |
|
my $cnum=&getcnum($safeeval); |
|
my $cdom=&getcdom($safeeval); |
|
my $chome=&getchome($safeeval); |
|
|
my $namespace; |
my $namespace; |
unless ($namespace=$ENV{'request.course.id'}) { return ''; } |
unless ($namespace=$cid) { return ''; } |
|
|
# ----------------------------------------------------------- Get stored values |
# ----------------------------------------------------------- Get stored values |
my $answer=&Apache::lonnet::reply( |
my $answer=&Apache::lonnet::reply( |
Line 1227 sub rowaassess {
|
Line 1252 sub rowaassess {
|
# ----------------------------- returnhash now has all stores for this resource |
# ----------------------------- returnhash now has all stores for this resource |
|
|
# ---------------------------- initialize coursedata and userdata for this user |
# ---------------------------- initialize coursedata and userdata for this user |
%courseopt=(); |
undef %courseopt; |
%useropt=(); |
undef %useropt; |
my $uhome=&Apache::lonnet::homeserver($uname,$udom); |
|
|
my $userprefix=$uname.'_'.$udom.'_'; |
|
|
unless ($uhome eq 'no_host') { |
unless ($uhome eq 'no_host') { |
# -------------------------------------------------------------- Get coursedata |
# -------------------------------------------------------------- Get coursedata |
unless |
unless |
((time-$courserdatas{$ENV{'request.course.id'}.'.last_cache'})<120) { |
((time-$courserdatas{$cid.'.last_cache'})<120) { |
my $reply=&Apache::lonnet::reply('dump:'. |
my $reply=&Apache::lonnet::reply('dump:'.$cdom.':'.$cnum. |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'. |
':resourcedata',$chome); |
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.':resourcedata', |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
|
if ($reply!~/^error\:/) { |
if ($reply!~/^error\:/) { |
$courserdatas{$ENV{'request.course.id'}}=$reply; |
$courserdatas{$cid}=$reply; |
$courserdatas{$ENV{'request.course.id'}.'.last_cache'}=time; |
$courserdatas{$cid.'.last_cache'}=time; |
} |
} |
} |
} |
map { |
map { |
my ($name,$value)=split(/\=/,$_); |
my ($name,$value)=split(/\=/,$_); |
$courseopt{&Apache::lonnet::unescape($name)}= |
$courseopt{$userprefix.&Apache::lonnet::unescape($name)}= |
&Apache::lonnet::unescape($value); |
&Apache::lonnet::unescape($value); |
} split(/\&/,$courserdatas{$ENV{'request.course.id'}}); |
} split(/\&/,$courserdatas{$ENV{'request.course.id'}}); |
# --------------------------------------------------- Get userdata (if present) |
# --------------------------------------------------- Get userdata (if present) |
Line 1260 sub rowaassess {
|
Line 1285 sub rowaassess {
|
} |
} |
map { |
map { |
my ($name,$value)=split(/\=/,$_); |
my ($name,$value)=split(/\=/,$_); |
$useropt{&Apache::lonnet::unescape($name)}= |
$useropt{$userprefix.&Apache::lonnet::unescape($name)}= |
&Apache::lonnet::unescape($value); |
&Apache::lonnet::unescape($value); |
} split(/\&/,$userrdatas{$uname.'___'.$udom}); |
} split(/\&/,$userrdatas{$uname.'___'.$udom}); |
} |
} |
# -- now courseopt, useropt initialized for this user and course (used parmval) |
|
|
|
my %c=(); |
# ----------------- now courseopt, useropt initialized for this user and course |
|
# (used by parmval) |
|
|
|
my %c=(); |
|
|
|
if (tie(%parmhash,'GDBM_File', |
|
&getcfn($safeeval).'_parms.db',&GDBM_READER,0640)) { |
my %f=&getformulas($safeeval); |
my %f=&getformulas($safeeval); |
map { |
map { |
if ($_=~/^A/) { |
if ($_=~/^A/) { |
Line 1282 sub rowaassess {
|
Line 1312 sub rowaassess {
|
} |
} |
} |
} |
} keys %f; |
} keys %f; |
|
untie(%parmhash); |
&setconstants($safeeval,%c); |
} |
|
&setconstants($safeeval,%c); |
} |
} |
|
|
# --------------------------------------------------------- Various form fields |
# --------------------------------------------------------- Various form fields |
Line 1334 sub loadrows() {
|
Line 1365 sub loadrows() {
|
my $safeeval=shift; |
my $safeeval=shift; |
my $stype=&gettype($safeeval); |
my $stype=&gettype($safeeval); |
if ($stype eq 'classcalc') { |
if ($stype eq 'classcalc') { |
&loadcourse($thissheet); |
&loadcourse($safeeval); |
} elsif ($stype eq 'studentcalc') { |
} elsif ($stype eq 'studentcalc') { |
&loadstudent($thissheet); |
&loadstudent($safeeval); |
} else { |
} else { |
&loadassessment($thissheet); |
&loadassessment($safeeval); |
} |
} |
} |
} |
|
|
Line 1349 sub loadrows() {
|
Line 1380 sub loadrows() {
|
|
|
sub exportsheet { |
sub exportsheet { |
my ($uname,$udom,$stype,$usymb,$fn)=@_; |
my ($uname,$udom,$stype,$usymb,$fn)=@_; |
my $thissheet=($uname,$udom,$stype,$usymb); |
my $thissheet=&makenewsheet($uname,$udom,$stype,$usymb); |
&readsheet($thissheet,$fn); |
&readsheet($thissheet,$fn); |
&updatesheet($thissheet); |
&updatesheet($thissheet); |
&loadrows($thissheet); |
&loadrows($thissheet); |
&calcsheet($thissheet); |
&calcsheet($thissheet); |
return &exportdata($thissheet); |
my @returnthis=&exportdata($thissheet); |
|
undef $thissheet; |
|
return @returnthis; |
} |
} |
|
|
# ================================================================ Main handler |
# ================================================================ Main handler |
Line 1375 sub handler {
|
Line 1408 sub handler {
|
|
|
# ---------------------------------------------------- Global directory configs |
# ---------------------------------------------------- Global directory configs |
|
|
$includedir=r->dir_config('lonIncludes'); |
$includedir=$r->dir_config('lonIncludes'); |
$tmpdir=$r->dir_config('lonDaemons').'/tmp/'; |
$tmpdir=$r->dir_config('lonDaemons').'/tmp/'; |
|
|
# ----------------------------------------------------- Needs to be in a course |
# ----------------------------------------------------- Needs to be in a course |
|
|
if (($ENV{'request.course.fn'}) || |
if ($ENV{'request.course.fn'}) { |
($ENV{'request.state'} eq 'construct')) { |
|
|
|
# --------------------------- Get query string for limited number of parameters |
# --------------------------- Get query string for limited number of parameters |
|
|
Line 1398 $tmpdir=$r->dir_config('lonDaemons').'/t
|
Line 1430 $tmpdir=$r->dir_config('lonDaemons').'/t
|
} (split(/&/,$ENV{'QUERY_STRING'})); |
} (split(/&/,$ENV{'QUERY_STRING'})); |
|
|
# ------------------------------------------- Nothing there? Must be login user |
# ------------------------------------------- Nothing there? Must be login user |
|
|
|
my $aname; |
|
my $adom; |
|
|
unless ($ENV{'form.uname'}) { |
unless ($ENV{'form.uname'}) { |
$uname=$ENV{'user.name'}; |
$aname=$ENV{'user.name'}; |
$udom=$ENV{'user.domain'}; |
$adom=$ENV{'user.domain'}; |
} else { |
} else { |
$uname=$ENV{'form.uname'}; |
$aname=$ENV{'form.uname'}; |
$udom=$ENV{'form.udom'}; |
$adom=$ENV{'form.udom'}; |
} |
} |
# ----------------------------------------------------------- Change of target? |
|
|
|
my $reroute=($ENV{'form.utarget'} eq 'export'); |
|
|
|
# ------------------------------------------------------------------- Open page |
# ------------------------------------------------------------------- Open page |
|
|
Line 1418 $tmpdir=$r->dir_config('lonDaemons').'/t
|
Line 1451 $tmpdir=$r->dir_config('lonDaemons').'/t
|
|
|
# --------------------------------------------------------------- Screen output |
# --------------------------------------------------------------- Screen output |
|
|
unless ($reroute) { |
|
$r->print('<html><head><title>LON-CAPA Spreadsheet</title>'); |
$r->print('<html><head><title>LON-CAPA Spreadsheet</title>'); |
$r->print(<<ENDSCRIPT); |
$r->print(<<ENDSCRIPT); |
<script language="JavaScript"> |
<script language="JavaScript"> |
Line 1443 ENDSCRIPT
|
Line 1475 ENDSCRIPT
|
&hiddenfield('usymb',$ENV{'form.usymb'}). |
&hiddenfield('usymb',$ENV{'form.usymb'}). |
&hiddenfield('unewfield',''). |
&hiddenfield('unewfield',''). |
&hiddenfield('unewformula','')); |
&hiddenfield('unewformula','')); |
} |
|
|
# ---------------------- Make sure that this gets out, even if user hits "stop" |
|
|
$r->rflush(); |
$r->rflush(); |
|
|
# ---------------------------------------- Read new sheet or modified worksheet |
# ---------------------------------------- Read new sheet or modified worksheet |
|
|
my $sheetone=initsheet(); |
|
$r->uri=~/\/(\w+)$/; |
$r->uri=~/\/(\w+)$/; |
&settype($sheetone,$1); |
|
|
my $asheet=&makenewsheet($aname,$adom,$1,$ENV{'form.usymb'}); |
|
|
|
# ------------------------ If a new formula had been entered, go from work copy |
|
|
if ($ENV{'form.unewfield'}) { |
if ($ENV{'form.unewfield'}) { |
$r->print('<h2>Modified Workcopy</h2>'); |
$r->print('<h2>Modified Workcopy</h2>'); |
$ENV{'form.unewformula'}=~s/\'/\"/g; |
$ENV{'form.unewformula'}=~s/\'/\"/g; |
$r->print('<p>New formula: '.$ENV{'form.unewfield'}.'='. |
$r->print('<p>New formula: '.$ENV{'form.unewfield'}.'='. |
$ENV{'form.unewformula'}.'<p>'); |
$ENV{'form.unewformula'}.'<p>'); |
&setfilename($sheetone,$ENV{'form.ufn'}); |
&setfilename($asheet,$ENV{'form.ufn'}); |
&tmpread($sheetone,$r->dir_config('lonDaemons').'/tmp/', |
&tmpread($asheet, |
$ENV{'form.usymb'}, |
|
$ENV{'form.unewfield'},$ENV{'form.unewformula'}); |
$ENV{'form.unewfield'},$ENV{'form.unewformula'}); |
} elsif ($ENV{'form.saveas'}) { |
|
&setfilename($sheetone,$ENV{'form.ufn'}); |
} elsif ($ENV{'form.saveas'}) { |
&tmpread($sheetone,, |
&setfilename($asheet,$ENV{'form.ufn'}); |
$ENV{'form.usymb'}); |
&tmpread($asheet); |
} else { |
} else { |
unless ($ENV{'form.ufn'}) { |
&readsheet($asheet,$ENV{'form.ufn'}); |
} |
} |
|
|
if (&gettype($sheetone) eq 'classcalc') { |
# -------------------------------------------------- Print out user information |
# ---------------------------------- For course view: get courselist and update |
|
&updatestudentrows($sheetone); |
unless (&gettype($asheet) eq 'classcalc') { |
} else { |
$r->print('<p><b>User:</b> '.&getuname($asheet). |
# ----------------- For assessment and student: See if all import rows uptodate |
'<br><b>Domain:</b> '.&getudom($asheet)); |
|
if (&getcsec($asheet) eq '-1') { |
|
$r->print('<h3><font color=red>'. |
|
'Not a student in this course</font></h3>'); |
|
} else { |
|
$r->print('<br><b>Section/Group:</b> '.&getcsec($asheet)); |
|
} |
|
} |
|
|
|
# ---------------------------------------------------------------- Course title |
|
|
|
$r->print('<h1>'. |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}.'</h1>'); |
|
|
|
|
if (tie(%parmhash,'GDBM_File', |
|
$ENV{'request.course.fn'}.'_parms.db',&GDBM_READER,0640)) { |
|
$csec=&Apache::lonnet::usection($udom,$uname,$ENV{'request.course.id'}); |
|
if ($csec eq '-1') { |
|
$r->print('<h3><font color=red>'. |
|
"User '$uname' at domain '$udom' not a student in this course</font></h3>"); |
|
} |
|
&updaterows($sheetone); |
|
untie(%parmhash); |
|
} else { |
|
$r->print('<h3><font color=red>'. |
|
'Could not initialize import fields (not in a course)</font></h3>'); |
|
} |
|
} |
|
# ---------------------------------------------------- See if something to save |
# ---------------------------------------------------- See if something to save |
|
|
if (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'})) { |
if (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'})) { |
my $fname=''; |
my $fname=''; |
if ($ENV{'form.saveas'} && ($fname=$ENV{'form.newfn'})) { |
if ($ENV{'form.saveas'} && ($fname=$ENV{'form.newfn'})) { |
$fname=~s/\W/\_/g; |
$fname=~s/\W/\_/g; |
if ($fname eq 'default') { $fname='course_default'; } |
if ($fname eq 'default') { $fname='course_default'; } |
$fname.='_'.&gettype($sheetone); |
$fname.='_'.&gettype($asheet); |
&setfilename($sheetone,$fname); |
&setfilename($asheet,$fname); |
$ENV{'form.ufn'}=$fname; |
$ENV{'form.ufn'}=$fname; |
my $reply=&writesheet($sheetone); |
$r->print('<p>Saving spreadsheet: '. |
unless ($reroute) { |
&writesheet($asheet,$ENV{'form.makedefufn'}).'<p>'); |
$r->print('<p>Saving spreadsheet: '.$reply.'<p>'); |
} |
} |
|
if ($ENV{'form.makedefufn'}) { |
|
my $reply=&Apache::lonnet::reply('put:'. |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'. |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}. |
|
':environment:spreadsheet_default_'. |
|
&gettype($sheetone).'='. |
|
&Apache::lonnet::escape($fname), |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
|
unless ($reroute) { |
|
$r->print('<p>Making default spreadsheet: '.$reply.'<p>'); |
|
} |
|
} |
|
} |
|
} |
} |
|
|
# ------------------------------------------------ Write the modified worksheet |
# ------------------------------------------------ Write the modified worksheet |
|
|
&tmpwrite($sheetone,$r->dir_config('lonDaemons').'/tmp/', |
$r->print('<b>Current sheet:</b> '.&getfilename($asheet).'<p>'); |
$ENV{'form.usymb'}); |
|
|
&tmpwrite($asheet); |
|
|
|
# ----------------------------------------------------------------- Save dialog |
|
|
|
|
# ----------------------------------------------------- Print user, course, etc |
|
unless ($reroute) { |
|
if (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'})) { |
if (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'})) { |
my $fname=$ENV{'form.ufn'}; |
my $fname=$ENV{'form.ufn'}; |
$fname=~s/\_[^\_]+$//; |
$fname=~s/\_[^\_]+$//; |
Line 1529 ENDSCRIPT
|
Line 1555 ENDSCRIPT
|
'<input type=text size=20 name=newfn value="'.$fname. |
'<input type=text size=20 name=newfn value="'.$fname. |
'"> (make default: <input type=checkbox name="makedefufn">)<p>'); |
'"> (make default: <input type=checkbox name="makedefufn">)<p>'); |
} |
} |
$r->print(&hiddenfield('ufn',$ENV{'form.ufn'})); |
|
unless (&gettype($sheetone) eq 'classcalc') { |
|
$r->print('<br><b>User:</b> '.$uname.'<br><b>Domain:</b> '.$udom); |
|
} |
|
$r->print('<h1>'. |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}.'</h1>'); |
|
if ($csec) { |
|
$r->print('<h3>Group/Section: '.$csec.'</h3>'); |
|
} |
|
} |
|
# -------------------------------------------------------- Import and calculate |
|
|
|
if (&gettype($sheetone) eq 'assesscalc') { |
$r->print(&hiddenfield('ufn',&getfilename($asheet))); |
&rowaassess($sheetone,$ENV{'form.usymb'}); |
|
} elsif (&gettype($sheetone) eq 'studentcalc') { |
|
&rowazstudent($sheetone); |
# ----------------------------------------------------- Update sheet, load rows |
} else { |
|
&rowazclass($sheetone); |
&updatesheet($asheet); |
} |
&loadrows($asheet); |
my $calcoutput=&calcsheet($sheetone); |
|
unless ($reroute) { |
|
$r->print('<h3><font color=red>'.$calcoutput.'</h3></font>'); |
|
} |
|
|
|
# ------------------------------------------------------- Print or export sheet |
|
unless ($reroute) { |
|
&outsheet($r,$sheetone); |
|
|
|
|
my $calcoutput=&calcsheet($asheet); |
|
$r->print('<h3><font color=red>'.$calcoutput.'</h3></font>'); |
|
|
|
&outsheet($r,$asheet); |
$r->print('</form></body></html>'); |
$r->print('</form></body></html>'); |
} else { |
|
$r->print(&exportrow($sheetone)); |
|
} |
|
# ------------------------------------------------------------------------ Done |
# ------------------------------------------------------------------------ Done |
} else { |
} else { |
# ----------------------------- Not in a course, or not allowed to modify parms |
# ----------------------------- Not in a course, or not allowed to modify parms |
Line 1570 ENDSCRIPT
|
Line 1581 ENDSCRIPT
|
} |
} |
return OK; |
return OK; |
|
|
$bombnomatterwhat='yes'; |
|
} |
} |
|
|
1; |
1; |