version 1.28, 2001/01/02 16:03:14
|
version 1.29, 2001/01/02 20:19:34
|
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'}. |
'";$cid="'.$ENV{'request.course.id'}. |
';$cdom='.$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}. |
'";$cfn="'.$ENV{'request.course.fn'}. |
';$chome='.$ENV{'course.'.$ENV{'request.course.id'}.'.home'}.';'); |
'";$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 870 sub tmpread {
|
Line 881 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 906 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 1149 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 1157 sub rowazstudent {
|
if ($_=~/^A(\d+)/) { |
if ($_=~/^A(\d+)/) { |
my $row=$1; |
my $row=$1; |
unless ($f{$_}=~/^\!/) { |
unless ($f{$_}=~/^\!/) { |
my @assessdata=split(/\_\_\_\;\_\_\_/, |
# my @assessdata=split(/\_\_\_\;\_\_\_/, |
&Apache::lonnet::ssi( |
# &Apache::lonnet::ssi( |
'/adm/assesscalc',('utarget' => 'export', |
# '/adm/assesscalc',('utarget' => 'export', |
'uname' => $uname, |
# 'uname' => $uname, |
'udom' => $udom, |
# 'udom' => $udom, |
'usymb' => $f{$_}))); |
# 'usymb' => $f{$_}))); |
my $index=0; |
my $index=0; |
map { |
# map { |
if ($assessdata[$index]) { |
# if ($assessdata[$index]) { |
$c{$_.$row}=$assessdata[$index]; |
# $c{$_.$row}=$assessdata[$index]; |
unless ($_ eq 'A') { |
# unless ($_ eq 'A') { |
$f{$_.$row}='import'; |
# $f{$_.$row}='import'; |
} |
# } |
} |
# } |
$index++; |
# $index++; |
} ('A','B','C','D','E','F','G','H','I','J','K','L','M', |
# } ('A','B','C','D','E','F','G','H','I','J','K','L','M', |
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); |
# 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); |
} |
} |
} |
} |
} keys %f; |
} keys %f; |
Line 1167 sub rowazstudent {
|
Line 1183 sub rowazstudent {
|
|
|
# --------------------------------------------------- Load data for one student |
# --------------------------------------------------- Load data for one student |
|
|
sub rowazclass { |
sub loadclass { |
my $safeeval=shift; |
my $safeeval=shift; |
my %c=(); |
my %c=(); |
my %f=&getformulas($safeeval); |
my %f=&getformulas($safeeval); |
Line 1176 sub rowazclass {
|
Line 1192 sub rowazclass {
|
my $row=$1; |
my $row=$1; |
unless ($f{$_}=~/^\!/) { |
unless ($f{$_}=~/^\!/) { |
my ($tname,$tdom)=split(/\:/,$_); |
my ($tname,$tdom)=split(/\:/,$_); |
my @assessdata=split(/\_\_\_\;\_\_\_/, |
# my @assessdata=split(/\_\_\_\;\_\_\_/, |
&Apache::lonnet::ssi( |
# &Apache::lonnet::ssi( |
'/adm/studentcalc',('utarget' => 'export', |
# '/adm/studentcalc',('utarget' => 'export', |
'uname' => $tname, |
# 'uname' => $tname, |
'udom' => $tdom))); |
# 'udom' => $tdom))); |
my $index=0; |
my $index=0; |
map { |
# map { |
if ($assessdata[$index]) { |
# if ($assessdata[$index]) { |
$c{$_.$row}=$assessdata[$index]; |
# $c{$_.$row}=$assessdata[$index]; |
unless ($_ eq 'A') { |
# unless ($_ eq 'A') { |
$f{$_.$row}='import'; |
# $f{$_.$row}='import'; |
} |
# } |
} |
# } |
$index++; |
# $index++; |
} ('A','B','C','D','E','F','G','H','I','J','K','L','M', |
# } ('A','B','C','D','E','F','G','H','I','J','K','L','M', |
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); |
# 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); |
} |
} |
} |
} |
} keys %f; |
} keys %f; |
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 1229 sub rowaassess {
|
Line 1254 sub rowaassess {
|
# ---------------------------- initialize coursedata and userdata for this user |
# ---------------------------- initialize coursedata and userdata for this user |
%courseopt=(); |
%courseopt=(); |
%useropt=(); |
%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); |
Line 1375 sub handler {
|
Line 1406 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 1428 $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 1449 $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 1473 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); |
|
if ($ENV{'form.unewfield'}) { |
|
$r->print('<h2>Modified Workcopy</h2>'); |
|
$ENV{'form.unewformula'}=~s/\'/\"/g; |
|
$r->print('<p>New formula: '.$ENV{'form.unewfield'}.'='. |
|
$ENV{'form.unewformula'}.'<p>'); |
|
&setfilename($sheetone,$ENV{'form.ufn'}); |
|
&tmpread($sheetone,$r->dir_config('lonDaemons').'/tmp/', |
|
$ENV{'form.usymb'}, |
|
$ENV{'form.unewfield'},$ENV{'form.unewformula'}); |
|
} elsif ($ENV{'form.saveas'}) { |
|
&setfilename($sheetone,$ENV{'form.ufn'}); |
|
&tmpread($sheetone,, |
|
$ENV{'form.usymb'}); |
|
} else { |
|
unless ($ENV{'form.ufn'}) { |
|
} |
|
|
|
if (&gettype($sheetone) eq 'classcalc') { |
my $asheet=&makenewsheet($aname,$adom,$1,$ENV{'form.usymb'}); |
|
|
|
# if ($ENV{'form.unewfield'}) { |
|
# $r->print('<h2>Modified Workcopy</h2>'); |
|
# $ENV{'form.unewformula'}=~s/\'/\"/g; |
|
# $r->print('<p>New formula: '.$ENV{'form.unewfield'}.'='. |
|
# $ENV{'form.unewformula'}.'<p>'); |
|
# &setfilename($sheetone,$ENV{'form.ufn'}); |
|
# &tmpread($sheetone,$r->dir_config('lonDaemons').'/tmp/', |
|
# $ENV{'form.usymb'}, |
|
# $ENV{'form.unewfield'},$ENV{'form.unewformula'}); |
|
# } elsif ($ENV{'form.saveas'}) { |
|
# &setfilename($sheetone,$ENV{'form.ufn'}); |
|
# &tmpread($sheetone,, |
|
# $ENV{'form.usymb'}); |
|
# } else { |
|
# unless ($ENV{'form.ufn'}) { |
|
# }# |
|
# |
|
# if (&gettype($sheetone) eq 'classcalc') { |
# ---------------------------------- For course view: get courselist and update |
# ---------------------------------- For course view: get courselist and update |
&updatestudentrows($sheetone); |
# &updatestudentrows($sheetone); |
} else { |
# } else { |
# ----------------- For assessment and student: See if all import rows uptodate |
# ----------------- For assessment and student: See if all import rows uptodate |
|
# $csec=&Apache::lonnet::usection($udom,$uname,$ENV{'request.course.id'}); |
if (tie(%parmhash,'GDBM_File', |
# if ($csec eq '-1') { |
$ENV{'request.course.fn'}.'_parms.db',&GDBM_READER,0640)) { |
# $r->print('<h3><font color=red>'. |
$csec=&Apache::lonnet::usection($udom,$uname,$ENV{'request.course.id'}); |
# "User '$uname' at domain '$udom' not a student in this course</font></h3>"); |
if ($csec eq '-1') { |
# } |
$r->print('<h3><font color=red>'. |
# &updaterows($sheetone); |
"User '$uname' at domain '$udom' not a student in this course</font></h3>"); |
# untie(%parmhash); |
} |
# } else { |
&updaterows($sheetone); |
# $r->print('<h3><font color=red>'. |
untie(%parmhash); |
# 'Could not initialize import fields (not in a course)</font></h3>'); |
} 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($sheetone); |
&setfilename($sheetone,$fname); |
# &setfilename($sheetone,$fname); |
$ENV{'form.ufn'}=$fname; |
# $ENV{'form.ufn'}=$fname; |
my $reply=&writesheet($sheetone); |
# my $reply=&writesheet($sheetone); |
unless ($reroute) { |
# unless ($reroute) { |
$r->print('<p>Saving spreadsheet: '.$reply.'<p>'); |
# $r->print('<p>Saving spreadsheet: '.$reply.'<p>'); |
} |
# } |
if ($ENV{'form.makedefufn'}) { |
# if ($ENV{'form.makedefufn'}) { |
my $reply=&Apache::lonnet::reply('put:'. |
# my $reply=&Apache::lonnet::reply('put:'. |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'. |
# $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'. |
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}. |
# $ENV{'course.'.$ENV{'request.course.id'}.'.num'}. |
':environment:spreadsheet_default_'. |
# ':environment:spreadsheet_default_'. |
&gettype($sheetone).'='. |
# &gettype($sheetone).'='. |
&Apache::lonnet::escape($fname), |
# &Apache::lonnet::escape($fname), |
$ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
# $ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
unless ($reroute) { |
# unless ($reroute) { |
$r->print('<p>Making default spreadsheet: '.$reply.'<p>'); |
# $r->print('<p>Making default spreadsheet: '.$reply.'<p>'); |
} |
# } |
} |
# } |
} |
# } |
} |
# } |
# ------------------------------------------------ Write the modified worksheet |
# ------------------------------------------------ Write the modified worksheet |
|
# |
&tmpwrite($sheetone,$r->dir_config('lonDaemons').'/tmp/', |
# &tmpwrite($sheetone,$r->dir_config('lonDaemons').'/tmp/', |
$ENV{'form.usymb'}); |
# $ENV{'form.usymb'}); |
|
# |
# ----------------------------------------------------- Print user, course, etc |
# ----------------------------------------------------- Print user, course, etc |
unless ($reroute) { |
# 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/\_[^\_]+$//; |
if ($fname eq 'default') { $fname='course_default'; } |
# if ($fname eq 'default') { $fname='course_default'; } |
$r->print('<input type=submit name=saveas value="Save as ...">'. |
# $r->print('<input type=submit name=saveas value="Save as ...">'. |
'<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'})); |
# $r->print(&hiddenfield('ufn',$ENV{'form.ufn'})); |
unless (&gettype($sheetone) eq 'classcalc') { |
# unless (&gettype($sheetone) eq 'classcalc') { |
$r->print('<br><b>User:</b> '.$uname.'<br><b>Domain:</b> '.$udom); |
# $r->print('<br><b>User:</b> '.$uname.'<br><b>Domain:</b> '.$udom); |
} |
# } |
$r->print('<h1>'. |
# $r->print('<h1>'. |
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}.'</h1>'); |
# $ENV{'course.'.$ENV{'request.course.id'}.'.description'}.'</h1>'); |
if ($csec) { |
# if ($csec) { |
$r->print('<h3>Group/Section: '.$csec.'</h3>'); |
# $r->print('<h3>Group/Section: '.$csec.'</h3>'); |
} |
# } |
} |
# } |
# -------------------------------------------------------- Import and calculate |
# -------------------------------------------------------- Import and calculate |
|
# |
|
# if (&gettype($sheetone) eq 'assesscalc') { |
|
# &rowaassess($sheetone,$ENV{'form.usymb'}); |
|
# } elsif (&gettype($sheetone) eq 'studentcalc') { |
|
# &rowazstudent($sheetone); |
|
# } else { |
|
# &rowazclass($sheetone); |
|
# } |
|
|
if (&gettype($sheetone) eq 'assesscalc') { |
|
&rowaassess($sheetone,$ENV{'form.usymb'}); |
|
} elsif (&gettype($sheetone) eq 'studentcalc') { |
|
&rowazstudent($sheetone); |
|
} else { |
|
&rowazclass($sheetone); |
|
} |
|
my $calcoutput=&calcsheet($sheetone); |
|
unless ($reroute) { |
|
$r->print('<h3><font color=red>'.$calcoutput.'</h3></font>'); |
|
} |
|
|
|
# ------------------------------------------------------- Print or export sheet |
&readsheet($asheet,''); |
unless ($reroute) { |
&updatesheet($asheet); |
&outsheet($r,$sheetone); |
&loadrows($asheet); |
|
|
|
|
|
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 1602 ENDSCRIPT
|
} |
} |
return OK; |
return OK; |
|
|
$bombnomatterwhat='yes'; |
|
} |
} |
|
|
1; |
1; |