--- loncom/interface/spreadsheet/lonspreadsheet.pm 2003/06/18 15:32:37 1.10 +++ loncom/interface/spreadsheet/lonspreadsheet.pm 2003/06/19 14:52:21 1.12 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.10 2003/06/18 15:32:37 matthew Exp $ +# $Id: lonspreadsheet.pm,v 1.12 2003/06/19 14:52:21 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -93,18 +93,19 @@ sub file_dialogs { my $bgcolor = "#FFFFFF"; my $sheettype = $spreadsheet->{'type'}; my $result = ''; + my $message = ''; ## ## Deal with saving the spreadsheet - if (exists($ENV{'form.save'}) && + 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') { - $result .= "An error occurred while saving the spreadsheet". + $message .= "An error occurred while saving the spreadsheet". "There error is:".$save_status; return $result; } else { - $result .= "Spreadsheet saved as ".$ENV{'form.savefilename'}; + $message .= "Spreadsheet saved as ".$ENV{'form.savefilename'}; } } elsif (exists($ENV{'form.newformula'}) && exists($ENV{'form.cell'}) && @@ -116,8 +117,13 @@ sub file_dialogs { $spreadsheet->save_tmp(); # output that we are dealing with a temporary file $result .=&hiddenfield('workcopy',$sheettype); - $result .='
'.$ENV{'form.cell'}.' = '.
-                  $ENV{'form.newformula'}."
\n"; + if ($ENV{'form.newformula'} !~ /^\s*$/) { + $message .=''. + ''. + '
Cell '.$ENV{'form.cell'}.' = 
'.$ENV{'form.newformula'}."
\n"; + } else { + $message .= 'Deleted contents of cell '.$ENV{'form.cell'}.'.'; + } } ## ## Editing code @@ -136,7 +142,7 @@ sub file_dialogs { $truefilename.'" />'. ''; my $makedefault_dialog = ''; + 'value="Save as & Make This Sheet the Default"/>'; # my $link = 'Select Spreadsheet File"; @@ -175,7 +181,7 @@ END END - return $result; + return ($result,$message); } sub handler { @@ -243,21 +249,43 @@ sub handler { ## Check permissions my $allowed_to_edit = &Apache::lonnet::allowed('mgr', $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'}); - + if (! $allowed_to_view) { + $allowed_to_view = &Apache::lonnet::allowed('vgr', + $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. + } # # Only those able to view others grades will be allowed to continue # if they are not requesting their own. - if (($sheettype eq 'classcalc') || - ($name ne $ENV{'user.name'} ) || - ($domain ne $ENV{'user.domain'})) { + if ($sheettype eq 'classcalc') { if (! $allowed_to_view) { $r->print('

Access Permission Denied

'. ''); return OK; } } + 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 '' ) { + my $stu_sec = &Apache::lonnet::usection($domain,$name, + $ENV{'request.course.id'}); + if ($stu_sec ne $ENV{'request.course.sec'}) { + $r->print + ('

The student requested is not in your section.

'. + ''); + return OK; + } + } + } + # # Header.... # @@ -352,17 +380,40 @@ ENDSCRIPT ## ## Editing/loading/saving if ($allowed_to_edit) { + my ($html,$action_message) = &file_dialogs($spreadsheet); if ($ENV{'form.makedefault'}) { $spreadsheet->make_default(); + if ($action_message) { + $action_message .= '
'; + } + $action_message .= 'Made this spreadsheet the default'; + if ($sheettype eq 'classcalc') { + $action_message .= ' for the course'; + } elsif ($sheettype eq 'studentcalc') { + $action_message .= ' for all students'; + } elsif ($sheettype eq 'assesscalc') { + $action_message .= ' for all assessments'; + } + $action_message .= '.'; } $r->print(''. - '
'.$spreadsheet->html_header().''. - &file_dialogs($spreadsheet)."
\n"); + ''.$html."\n"); + if ($action_message ne '') { + $r->print(< +Last Action: +   + $action_message + + +END + } $r->rflush(); } else { $r->print('
'.$spreadsheet->html_header(). "
\n"); } + $r->rflush(); # if (! exists($ENV{'form.not_first_run'}) && $sheettype eq 'classcalc') { $r->print('
');