version 1.20, 2000/12/30 17:13:54
|
version 1.22, 2000/12/30 21:33:11
|
Line 328 sub calc {
|
Line 328 sub calc {
|
return ''; |
return ''; |
} |
} |
|
|
|
sub templaterow { |
|
my @cols=(); |
|
$cols[0]='<b><font size=+1>Template</font></b>'; |
|
map { |
|
my $fm=$f{'template_'.$_}; |
|
$fm=~s/[\'\"]/\&\#34;/g; |
|
$cols[$#cols+1]="'template_$_','$fm'".'___eq___'.$fm; |
|
} ('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', |
|
'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'); |
|
return @cols; |
|
} |
|
|
sub outrowassess { |
sub outrowassess { |
my $n=shift; |
my $n=shift; |
my @cols=(); |
my @cols=(); |
Line 351 sub outrow {
|
Line 365 sub outrow {
|
my $n=shift; |
my $n=shift; |
my @cols=(); |
my @cols=(); |
if ($n) { |
if ($n) { |
$cols[0]=$rl{$f{'A'.$n}}.' stuff'; |
$cols[0]=$rl{$f{'A'.$n}}; |
} else { |
} else { |
$cols[0]='<b><font size=+1>Export</font></b>'; |
$cols[0]='<b><font size=+1>Export</font></b>'; |
} |
} |
Line 480 sub exportrow {
|
Line 494 sub exportrow {
|
|
|
sub rown { |
sub rown { |
my ($safeeval,$n)=@_; |
my ($safeeval,$n)=@_; |
my $defaultbg=((($n-1)/5)==int(($n-1)/5))?'#E0E0':'#FFFF'; |
my $defaultbg; |
|
unless ($n eq '-') { |
|
$defaultbg=((($n-1)/5)==int(($n-1)/5))?'#E0E0':'#FFFF'; |
|
} else { |
|
$defaultbg='#E0FF'; |
|
} |
my $rowdata="\n<tr><td><b><font size=+1>$n</font></b></td>"; |
my $rowdata="\n<tr><td><b><font size=+1>$n</font></b></td>"; |
my $showf=0; |
my $showf=0; |
my $proc; |
my $proc; |
Line 492 sub rown {
|
Line 511 sub rown {
|
$proc='&outrow'; |
$proc='&outrow'; |
$maxred=26; |
$maxred=26; |
} |
} |
|
if ($n eq '-') { $proc='&templaterow'; $n=-1; } |
map { |
map { |
my $bgcolor=$defaultbg.((($showf-1)/5==int(($showf-1)/5))?'99':'DD'); |
my $bgcolor=$defaultbg.((($showf-1)/5==int(($showf-1)/5))?'99':'DD'); |
my ($fm,$vl)=split(/\_\_\_eq\_\_\_/,$_); |
my ($fm,$vl)=split(/\_\_\_eq\_\_\_/,$_); |
Line 552 sub outsheet {
|
Line 572 sub outsheet {
|
$tabledata.='</tr>'; |
$tabledata.='</tr>'; |
my $row; |
my $row; |
my $maxrow=&getmaxrow($safeeval); |
my $maxrow=&getmaxrow($safeeval); |
|
$tabledata.=&rown($safeeval,'-'); |
for ($row=0;$row<=$maxrow;$row++) { |
for ($row=0;$row<=$maxrow;$row++) { |
$tabledata.=&rown($safeeval,$row); |
$tabledata.=&rown($safeeval,$row); |
} |
} |
Line 565 sub outsheet {
|
Line 586 sub outsheet {
|
sub readsheet { |
sub readsheet { |
my ($safeeval,$fn,$r)=@_; |
my ($safeeval,$fn,$r)=@_; |
my %f=(); |
my %f=(); |
unless ($fn) { |
if (($fn eq '') || ($fn=~/^default\_/)) { |
my $sheetxml=''; |
my $sheetxml=''; |
{ |
{ |
my $fh; |
my $fh; |
Line 629 sub writesheet {
|
Line 650 sub writesheet {
|
&getfilename($safeeval).':'. |
&getfilename($safeeval).':'. |
$sheetdata, |
$sheetdata, |
$ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
$ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
} |
if ($reply eq 'ok') { |
|
return &Apache::lonnet::reply('put:'. |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.':'. |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.':'. |
|
&gettype($safeeval).'_spreadsheets:'. |
|
&Apache::lonnet::escape(&getfilename($safeeval)).'='. |
|
$ENV{'user.name'}, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.home'}); |
|
} else { |
|
return $reply; |
|
} |
|
} |
|
return 'unauthorized'; |
} |
} |
|
|
# ----------------------------------------------- Make a temp copy of the sheet |
# ----------------------------------------------- Make a temp copy of the sheet |
|
|
sub tmpwrite { |
sub tmpwrite { |
my ($safeeval,$tmpdir,$symb)=@_; |
my ($safeeval,$tmpdir,$symb)=@_; |
my $fn=$uname.'_'.$udom.'_spreadsheet_'.&getfilename($safeeval); |
my $fn=$uname.'_'.$udom.'_spreadsheet_'.$symb.'_'.&getfilename($safeeval); |
$fn=~s/\W/\_/g; |
$fn=~s/\W/\_/g; |
$fn=$tmpdir.$fn.'.tmp'; |
$fn=$tmpdir.$fn.'.tmp'; |
my $fh; |
my $fh; |
Line 649 sub tmpwrite {
|
Line 682 sub tmpwrite {
|
|
|
sub tmpread { |
sub tmpread { |
my ($safeeval,$tmpdir,$symb,$nfield,$nform)=@_; |
my ($safeeval,$tmpdir,$symb,$nfield,$nform)=@_; |
my $fn=$uname.'_'.$udom.'_spreadsheet_'.&getfilename($safeeval); |
my $fn=$uname.'_'.$udom.'_spreadsheet_'.$symb.'_'.&getfilename($safeeval); |
$fn=~s/\W/\_/g; |
$fn=~s/\W/\_/g; |
$fn=$tmpdir.$fn.'.tmp'; |
$fn=$tmpdir.$fn.'.tmp'; |
my $fh; |
my $fh; |
Line 663 sub tmpread {
|
Line 696 sub tmpread {
|
$fo{$name}=$value; |
$fo{$name}=$value; |
} |
} |
} |
} |
$fo{$nfield}=$nform; |
if ($nfield) { $fo{$nfield}=$nform; } |
&setformulas($safeeval,%fo); |
&setformulas($safeeval,%fo); |
} |
} |
|
|
Line 1086 sub handler {
|
Line 1119 sub handler {
|
</script> |
</script> |
ENDSCRIPT |
ENDSCRIPT |
$r->print('</head><body bgcolor="#FFFFFF">'. |
$r->print('</head><body bgcolor="#FFFFFF">'. |
|
'<img align=right src=/adm/lonIcons/lonlogos.gif>'. |
|
'<h1>LON-CAPA Spreadsheet</h1>'. |
'<form action="'.$r->uri.'" name=sheet method=post>'. |
'<form action="'.$r->uri.'" name=sheet method=post>'. |
&hiddenfield('uname',$ENV{'form.uname'}). |
&hiddenfield('uname',$ENV{'form.uname'}). |
&hiddenfield('udom',$ENV{'form.udom'}). |
&hiddenfield('udom',$ENV{'form.udom'}). |
&hiddenfield('usymb',$ENV{'form.usymb'}). |
&hiddenfield('usymb',$ENV{'form.usymb'}). |
&hiddenfield('ufn',$ENV{'form.ufn'}). |
|
&hiddenfield('unewfield',''). |
&hiddenfield('unewfield',''). |
&hiddenfield('unewformula','')); |
&hiddenfield('unewformula','')); |
} |
} |
Line 1103 ENDSCRIPT
|
Line 1137 ENDSCRIPT
|
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('New formula: '.$ENV{'form.unewfield'}.'='. |
$r->print('<p>New formula: '.$ENV{'form.unewfield'}.'='. |
$ENV{'form.unewformula'}.'<br>'); |
$ENV{'form.unewformula'}.'<p>'); |
&setfilename($sheetone,$ENV{'form.ufn'}); |
&setfilename($sheetone,$ENV{'form.ufn'}); |
&tmpread($sheetone,$r->dir_config('lonDaemons').'/tmp/', |
&tmpread($sheetone,$r->dir_config('lonDaemons').'/tmp/', |
$ENV{'form.usymb'}, |
$ENV{'form.usymb'}, |
$ENV{'form.unewfield'},$ENV{'form.unewformula'}); |
$ENV{'form.unewfield'},$ENV{'form.unewformula'}); |
|
} elsif ($ENV{'form.saveas'}) { |
|
&setfilename($sheetone,$ENV{'form.ufn'}); |
|
&tmpread($sheetone,$r->dir_config('lonDaemons').'/tmp/', |
|
$ENV{'form.usymb'}); |
} else { |
} else { |
&readsheet($sheetone,$ENV{'form.ufn'},$r); |
&readsheet($sheetone,$ENV{'form.ufn'},$r); |
|
$ENV{'form.ufn'}=&getfilename($sheetone); |
} |
} |
|
|
# --------------------------------------------- See if all import rows uptodate |
# --------------------------------------------- See if all import rows uptodate |
Line 1128 ENDSCRIPT
|
Line 1167 ENDSCRIPT
|
$r->print('<h3><font color=red>'. |
$r->print('<h3><font color=red>'. |
'Could not initialize import fields (not in a course)</font></h3>'); |
'Could not initialize import fields (not in a course)</font></h3>'); |
} |
} |
|
# ---------------------------------------------------- See if something to save |
|
if (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'})) { |
|
my $fname=''; |
|
if ($ENV{'form.saveas'} && ($fname=$ENV{'form.newfn'})) { |
|
$fname=~s/\W/\_/g; |
|
if ($fname eq 'default') { $fname='course_default'; } |
|
$fname.='_'.&gettype($sheetone); |
|
&setfilename($sheetone,$fname); |
|
$ENV{'form.ufn'}=$fname; |
|
my $reply=&writesheet($sheetone); |
|
unless ($reroute) { |
|
$r->print('<p>Saving 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/', |
Line 1136 ENDSCRIPT
|
Line 1189 ENDSCRIPT
|
|
|
# ----------------------------------------------------- Print user, course, etc |
# ----------------------------------------------------- Print user, course, etc |
unless ($reroute) { |
unless ($reroute) { |
$r->print("<b>User '$uname' at domain '$udom' for '". |
if (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'})) { |
|
my $fname=$ENV{'form.ufn'}; |
|
$fname=~s/\_[^\_]+$//; |
|
if ($fname eq 'default') { $fname='course_default'; } |
|
$r->print('<input type=submit name=saveas value="Save as ...">'. |
|
'<input type=text size=20 name=newfn value="'.$fname.'"><p>'); |
|
} |
|
$r->print(&hiddenfield('ufn',$ENV{'form.ufn'}). |
|
"<b>User '$uname' at domain '$udom' for '". |
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}."'"); |
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}."'"); |
if ($csec) { |
if ($csec) { |
$r->print(", group/section '$csec'"); |
$r->print(", group/section '$csec'"); |