--- loncom/interface/spreadsheet/lonspreadsheet.pm 2004/10/12 20:51:54 1.39 +++ loncom/interface/spreadsheet/lonspreadsheet.pm 2005/04/07 06:56:23 1.40 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.39 2004/10/12 20:51:54 albertel Exp $ +# $Id: lonspreadsheet.pm,v 1.40 2005/04/07 06:56:23 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -100,9 +100,9 @@ sub file_dialogs { my $message = ''; ## ## Deal with saving the spreadsheet - if ((exists($ENV{'form.save'}) || exists($ENV{'form.makedefault'})) && - exists($ENV{'form.savefilename'})) { - $spreadsheet->filename($ENV{'form.savefilename'}); + if ((exists($env{'form.save'}) || exists($env{'form.makedefault'})) && + exists($env{'form.savefilename'})) { + $spreadsheet->filename($env{'form.savefilename'}); my $save_status = $spreadsheet->save(); if ($save_status ne 'ok') { $message .= "An error occurred while saving the spreadsheet". @@ -110,22 +110,22 @@ sub file_dialogs { } else { $message .= "Spreadsheet saved as ".$spreadsheet->filename(); } - } elsif (exists($ENV{'form.newformula'}) && - exists($ENV{'form.cell'}) && - $ENV{'form.cell'} ne '' ) { + } elsif (exists($env{'form.newformula'}) && + exists($env{'form.cell'}) && + $env{'form.cell'} ne '' ) { ## ## Make any requested modifications to the spreadsheet - $spreadsheet->modify_cell($ENV{'form.cell'}, - $ENV{'form.newformula'}); + $spreadsheet->modify_cell($env{'form.cell'}, + $env{'form.newformula'}); $spreadsheet->save_tmp(); # output that we are dealing with a temporary file $result .=&hiddenfield('workcopy',$sheettype); - if ($ENV{'form.newformula'} !~ /^\s*$/) { + if ($env{'form.newformula'} !~ /^\s*$/) { $message .=''. - ''. - '
'.&mt('Cell').' '.$ENV{'form.cell'}.' = 
'.$ENV{'form.newformula'}."
\n"; + '
'.&mt('Cell').' '.$env{'form.cell'}.' = 
'. + '
'.$env{'form.newformula'}."
\n"; } else { - $message .= &mt('Deleted contents of cell').' '.$ENV{'form.cell'}.'.'; + $message .= &mt('Deleted contents of cell').' '.$env{'form.cell'}.'.'; } } ## @@ -205,7 +205,7 @@ sub handler { if ($loaderror) { return $loaderror; } # Check the course homeserver $loaderror= &Apache::lonnet::overloaderror($r, - $ENV{'course.'.$ENV{'request.course.id'}.'.home'}); + $env{'course.'.$env{'request.course.id'}.'.home'}); # if ($loaderror) { return $loaderror; } # # HTML Header @@ -219,20 +219,20 @@ sub handler { # Roles Checking # # Needs to be in a course - if (! $ENV{'request.course.fn'}) { + if (! $env{'request.course.fn'}) { # Not in a course, or not allowed to modify parms - $ENV{'user.error.msg'}= + $env{'user.error.msg'}= $r->uri.":opa:0:0:Cannot modify spreadsheet"; return HTTP_NOT_ACCEPTABLE; } - my $courseid = $ENV{'request.course.id'}; + my $courseid = $env{'request.course.id'}; # # Do not allow students to continue if standard or external grading is in # effect. # - if ($ENV{'request.role'} =~ /^st\./) { - if ($ENV{'course.'.$courseid.'.grading'} eq 'standard' || - $ENV{'course.'.$courseid.'.grading'} eq 'external' ) { + if ($env{'request.role'} =~ /^st\./) { + if ($env{'course.'.$courseid.'.grading'} eq 'standard' || + $env{'course.'.$courseid.'.grading'} eq 'external' ) { return HTTP_NOT_ACCEPTABLE; } } @@ -245,35 +245,35 @@ sub handler { # # Deal with restricted student permissions # - if ($ENV{'request.role'} =~ /^st\./) { - delete $ENV{'form.cell'} if (exists($ENV{'form.cell'})); - delete $ENV{'form.newformula'} if (exists($ENV{'form.newformula'})); + if ($env{'request.role'} =~ /^st\./) { + delete $env{'form.cell'} if (exists($env{'form.cell'})); + delete $env{'form.newformula'} if (exists($env{'form.newformula'})); } # # Determine basic information about the spreadsheet my ($sheettype) = ($r->uri=~/\/(\w+)$/); # my $symb = undef; - $symb = $ENV{'form.usymb'} if (exists($ENV{'form.usymb'})); - my $name = $ENV{'user.name'}; - my $domain = $ENV{'user.domain'}; - if (exists($ENV{'form.sname'}) && $ENV{'form.sname'} ne '') { - $name = $ENV{'form.sname'}; - $domain = $ENV{'form.sdomain'}; + $symb = $env{'form.usymb'} if (exists($env{'form.usymb'})); + my $name = $env{'user.name'}; + my $domain = $env{'user.domain'}; + if (exists($env{'form.sname'}) && $env{'form.sname'} ne '') { + $name = $env{'form.sname'}; + $domain = $env{'form.sdomain'}; } - $ENV{'form.sname'} = $name; - $ENV{'form.sdomain'} = $domain; + $env{'form.sname'} = $name; + $env{'form.sdomain'} = $domain; ## ## Check permissions my $allowed_to_edit = &Apache::lonnet::allowed('mgr', - $ENV{'request.course.id'}); + $env{'request.course.id'}); # Only those instructors/tas/whatevers with complete access # (not section restricted) are able to modify spreadsheets. my $allowed_to_view = &Apache::lonnet::allowed('vgr', - $ENV{'request.course.id'}); + $env{'request.course.id'}); if (! $allowed_to_view) { $allowed_to_view = &Apache::lonnet::allowed('vgr', - $ENV{'request.course.id'}.'/'.$ENV{'request.course.sec'}); + $env{'request.course.id'}.'/'.$env{'request.course.sec'}); # Those who are restricted by section are allowed to view. # The routines in lonstatistics which decide which students' # will be shown take care of the restriction by section. @@ -283,20 +283,20 @@ sub handler { # if they are not requesting their own. if ($sheettype eq 'classcalc') { if (! $allowed_to_view) { - $ENV{'user.error.msg'}= + $env{'user.error.msg'}= $r->uri.":vgr:0:0:Access Permission Denied"; return HTTP_NOT_ACCEPTABLE; } } - if ((($name ne $ENV{'user.name'} ) || - ($domain ne $ENV{'user.domain'})) && $sheettype ne 'classcalc') { + if ((($name ne $env{'user.name'} ) || + ($domain ne $env{'user.domain'})) && $sheettype ne 'classcalc') { # Check that the student is in their section? - if (exists($ENV{'request.course.sec'}) && - $ENV{'request.course.sec'} ne '' ) { + if (exists($env{'request.course.sec'}) && + $env{'request.course.sec'} ne '' ) { my $stu_sec = &Apache::lonnet::getsection($domain,$name, - $ENV{'request.course.id'}); - if ($stu_sec ne $ENV{'request.course.sec'}) { - $ENV{'user.error.msg'}= + $env{'request.course.id'}); + if ($stu_sec ne $env{'request.course.sec'}) { + $env{'user.error.msg'}= $r->uri.":vgr:0:0:Requested student not in your section."; return HTTP_NOT_ACCEPTABLE; } @@ -378,28 +378,28 @@ ENDSCRIPT $r->print(''.&Apache::loncommon::bodytag('Grades Spreadsheet'). &Apache::lonhtmlcommon::breadcrumbs(undef,'Spreadsheet'). '
'); - $r->print(&hiddenfield('sname' ,$ENV{'form.sname'}). - &hiddenfield('sdomain',$ENV{'form.sdomain'}). - &hiddenfield('usymb' ,$ENV{'form.usymb'})); + $r->print(&hiddenfield('sname' ,$env{'form.sname'}). + &hiddenfield('sdomain',$env{'form.sdomain'}). + &hiddenfield('usymb' ,$env{'form.usymb'})); $r->rflush(); ## ## Determine the filename to use my $filename = undef; if ($allowed_to_edit) { - $filename = $ENV{'form.filename'} if (exists($ENV{'form.filename'})); + $filename = $env{'form.filename'} if (exists($env{'form.filename'})); # - if (exists($ENV{'form.load'}) && exists($ENV{'form.loadfilename'})) { - $filename = $ENV{'form.loadfilename'}; - $ENV{'form.workcopy'} = 'no'; + if (exists($env{'form.load'}) && exists($env{'form.loadfilename'})) { + $filename = $env{'form.loadfilename'}; + $env{'form.workcopy'} = 'no'; } } ## ## Take care of "backdoor" spreadsheet expiration / recalc stuff - if ($allowed_to_edit && exists($ENV{'form.recalc'})) { - if (exists($ENV{'form.recalc'})) { - &Apache::loncoursedata::delete_caches($ENV{'requres.course.id'}); + if ($allowed_to_edit && exists($env{'form.recalc'})) { + if (exists($env{'form.recalc'})) { + &Apache::loncoursedata::delete_caches($env{'requres.course.id'}); } - if ($ENV{'form.recalc'} eq 'ilovewastingtime') { + if ($env{'form.recalc'} eq 'ilovewastingtime') { &Apache::lonnet::logthis('spreadsheet expired: entire course'); # expire ALL spreadsheets &Apache::lonnet::expirespread('','','studentcalc'); @@ -407,9 +407,9 @@ ENDSCRIPT $r->print('

'. &mt('Expired spreadsheet caches for all students'). '

'); - } elsif ($ENV{'form.recalc'} =~ /^symb:/) { + } elsif ($env{'form.recalc'} =~ /^symb:/) { # expire for all students on this symb - my ($symb) = ($ENV{'form.recalc'} =~ /^symb:(.*)$/); + my ($symb) = ($env{'form.recalc'} =~ /^symb:(.*)$/); &Apache::lonnet::logthis('spreadsheet expired: symb = '.$symb); &Apache::lonnet::expirespread('','','assesscalc',$symb); &Apache::lonnet::expirespread('','','studentcalc'); @@ -417,9 +417,9 @@ ENDSCRIPT &mt('Expired spreadsheet caches for all students for symb [_1]', $symb). ''); - } elsif ($ENV{'form.recalc'} =~ /^student:/) { + } elsif ($env{'form.recalc'} =~ /^student:/) { # expire all assessment spreadsheets for this user - my ($sname,$sdom) = ($ENV{'form.recalc'}=~/^student:(.*):(.*)$/); + my ($sname,$sdom) = ($env{'form.recalc'}=~/^student:(.*):(.*)$/); &Apache::lonnet::logthis('spreadsheet expired: student = '. $sname.'@'.$sdom); if (defined($sname) && defined($sdom)) { @@ -458,7 +458,7 @@ ENDSCRIPT ## Editing/loading/saving if ($allowed_to_edit) { my ($html,$action_message) = &file_dialogs($spreadsheet); - if ($ENV{'form.makedefault'}) { + if ($env{'form.makedefault'}) { $spreadsheet->make_default(); if ($action_message) { $action_message .= '
'; @@ -518,7 +518,7 @@ END # Keep track of the number of times we have been called, sort of. $r->print(&hiddenfield('not_first_run','whatever')); # - if (exists($ENV{'form.not_first_run'}) || $sheettype ne 'classcalc') { + if (exists($env{'form.not_first_run'}) || $sheettype ne 'classcalc') { $r->print($spreadsheet->get_html_title()); if ($allowed_to_view || $allowed_to_edit) { $r->print($spreadsheet->parent_link());