--- loncom/interface/Attic/lonspreadsheet.pm 2001/01/02 20:19:34 1.29 +++ loncom/interface/Attic/lonspreadsheet.pm 2001/01/02 22:35:30 1.30 @@ -781,6 +781,8 @@ sub makenewsheet { '";$uhome="'.&Apache::lonnet::homeserver($uname,$udom). '";$sheettype="'.$stype. '";$usymb="'.$usymb. + '";$csec="'.&Apache::lonnet::usection($udom,$uname, + $ENV{'request.course.id'}). '";$cid="'.$ENV{'request.course.id'}. '";$cfn="'.$ENV{'request.course.fn'}. '";$cnum="'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}. @@ -815,7 +817,7 @@ sub writesheet { $sheetdata,$chome); if ($reply eq 'ok') { $reply=&Apache::lonnet::reply('put:'.$cdom.':'.$cnum.':'. - &stype.'_spreadsheets:'. + $stype.'_spreadsheets:'. &Apache::lonnet::escape($fn).'='.$ENV{'user.name'}, $chome); if ($reply eq 'ok') { @@ -1157,23 +1159,20 @@ sub loadstudent { if ($_=~/^A(\d+)/) { my $row=$1; unless ($f{$_}=~/^\!/) { - # my @assessdata=split(/\_\_\_\;\_\_\_/, - # &Apache::lonnet::ssi( - # '/adm/assesscalc',('utarget' => 'export', - # 'uname' => $uname, - # 'udom' => $udom, -# 'usymb' => $f{$_}))); + my @assessdata=&exportsheet(&getuname($safeeval), + &getudom($safeeval), + 'assesscalc',$f{$_}); my $index=0; -# map { -# if ($assessdata[$index]) { -# $c{$_.$row}=$assessdata[$index]; -# unless ($_ eq 'A') { -# $f{$_.$row}='import'; -# } -# } -# $index++; -# } ('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'); + map { + if ($assessdata[$index]) { + $c{$_.$row}=$assessdata[$index]; + unless ($_ eq 'A') { + $f{$_.$row}='import'; + } + } + $index++; + } ('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'); } } } keys %f; @@ -1183,31 +1182,32 @@ sub loadstudent { # --------------------------------------------------- Load data for one student -sub loadclass { +sub loadcourse { my $safeeval=shift; my %c=(); my %f=&getformulas($safeeval); map { if ($_=~/^A(\d+)/) { my $row=$1; - unless ($f{$_}=~/^\!/) { - my ($tname,$tdom)=split(/\:/,$_); -# my @assessdata=split(/\_\_\_\;\_\_\_/, -# &Apache::lonnet::ssi( -# '/adm/studentcalc',('utarget' => 'export', -# 'uname' => $tname, -# 'udom' => $tdom))); + unless (($f{$_}=~/^\!/) + +|| ($row>5)) + + { + my @studentdata=&exportsheet(&getuname($safeeval), + &getudom($safeeval), + 'studentcalc'); my $index=0; -# map { -# if ($assessdata[$index]) { -# $c{$_.$row}=$assessdata[$index]; -# unless ($_ eq 'A') { -# $f{$_.$row}='import'; -# } -# } -# $index++; -# } ('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'); + map { + if ($studentdata[$index]) { + $c{$_.$row}=$studentdata[$index]; + unless ($_ eq 'A') { + $f{$_.$row}='import'; + } + } + $index++; + } ('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'); } } } keys %f; @@ -1484,104 +1484,81 @@ ENDSCRIPT my $asheet=&makenewsheet($aname,$adom,$1,$ENV{'form.usymb'}); -# if ($ENV{'form.unewfield'}) { -# $r->print('

Modified Workcopy

'); -# $ENV{'form.unewformula'}=~s/\'/\"/g; -# $r->print('

New formula: '.$ENV{'form.unewfield'}.'='. -# $ENV{'form.unewformula'}.'

'); -# &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 -# &updatestudentrows($sheetone); -# } else { -# ----------------- For assessment and student: See if all import rows uptodate -# $csec=&Apache::lonnet::usection($udom,$uname,$ENV{'request.course.id'}); -# if ($csec eq '-1') { -# $r->print('

'. -# "User '$uname' at domain '$udom' not a student in this course

"); -# } -# &updaterows($sheetone); -# untie(%parmhash); -# } else { -# $r->print('

'. -# 'Could not initialize import fields (not in a course)

'); -# } -# } +# ------------------------ If a new formula had been entered, go from work copy + + if ($ENV{'form.unewfield'}) { + $r->print('

Modified Workcopy

'); + $ENV{'form.unewformula'}=~s/\'/\"/g; + $r->print('

New formula: '.$ENV{'form.unewfield'}.'='. + $ENV{'form.unewformula'}.'

'); + &setfilename($asheet,$ENV{'form.ufn'}); + &tmpread($asheet, + $ENV{'form.unewfield'},$ENV{'form.unewformula'}); + + } elsif ($ENV{'form.saveas'}) { + &setfilename($asheet,$ENV{'form.ufn'}); + &tmpread($asheet); + } else { + &readsheet($asheet,$ENV{'form.ufn'}); + } + +# -------------------------------------------------- Print out user information + + unless (&gettype($asheet) eq 'classcalc') { + $r->print('

User: '.&getuname($asheet). + '
Domain: '.&getudom($asheet)); + if (&getcsec($asheet) eq '-1') { + $r->print('

'. + 'Not a student in this course

'); + } else { + $r->print('
Section/Group: '.&getcsec($asheet)); + } + } + +# ---------------------------------------------------------------- Course title + + $r->print('

'. + $ENV{'course.'.$ENV{'request.course.id'}.'.description'}.'

'); + + # ---------------------------------------------------- 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('

Saving spreadsheet: '.$reply.'

'); -# } -# 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('

Making default spreadsheet: '.$reply.'

'); -# } -# } -# } -# } + + 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($asheet); + &setfilename($asheet,$fname); + $ENV{'form.ufn'}=$fname; + $r->print('

Saving spreadsheet: '. + &writesheet($asheet,$ENV{'form.makedefufn'}).'

'); + } + } + # ------------------------------------------------ Write the modified worksheet -# -# &tmpwrite($sheetone,$r->dir_config('lonDaemons').'/tmp/', - # $ENV{'form.usymb'}); -# -# ----------------------------------------------------- Print user, course, etc -# unless ($reroute) { -# 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(''. -# ' (make default: )

'); -# } -# $r->print(&hiddenfield('ufn',$ENV{'form.ufn'})); -# unless (&gettype($sheetone) eq 'classcalc') { -# $r->print('
User: '.$uname.'
Domain: '.$udom); -# } -# $r->print('

'. -# $ENV{'course.'.$ENV{'request.course.id'}.'.description'}.'

'); -# if ($csec) { -# $r->print('

Group/Section: '.$csec.'

'); -# } -# } -# -------------------------------------------------------- Import and calculate -# -# if (&gettype($sheetone) eq 'assesscalc') { -# &rowaassess($sheetone,$ENV{'form.usymb'}); -# } elsif (&gettype($sheetone) eq 'studentcalc') { -# &rowazstudent($sheetone); -# } else { -# &rowazclass($sheetone); -# } + $r->print('Current sheet: '.&getfilename($asheet).'

'); + + &tmpwrite($asheet); + +# ----------------------------------------------------------------- Save dialog + + + 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(''. + ' (make default: )

'); + } + + $r->print(&hiddenfield('ufn',&getfilename($asheet))); + + +# ----------------------------------------------------- Update sheet, load rows - &readsheet($asheet,''); &updatesheet($asheet); &loadrows($asheet);