--- loncom/interface/spreadsheet/lonspreadsheet.pm 2003/05/23 19:36:04 1.4
+++ loncom/interface/spreadsheet/lonspreadsheet.pm 2003/07/16 13:52:19 1.16
@@ -1,5 +1,5 @@
#
-# $Id: lonspreadsheet.pm,v 1.4 2003/05/23 19:36:04 matthew Exp $
+# $Id: lonspreadsheet.pm,v 1.16 2003/07/16 13:52:19 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -88,6 +88,102 @@ sub selectbox {
return $selout.'';
}
+sub file_dialogs {
+ my ($spreadsheet) = @_;
+ my $bgcolor = "#FFFFFF";
+ my $sheettype = $spreadsheet->{'type'};
+ my $result = '';
+ 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'});
+ my $save_status = $spreadsheet->save();
+ if ($save_status ne 'ok') {
+ $message .= "An error occurred while saving the spreadsheet".
+ "There error is:".$save_status;
+ return $result;
+ } else {
+ $message .= "Spreadsheet saved as ".$ENV{'form.savefilename'};
+ }
+ } 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->save_tmp();
+ # output that we are dealing with a temporary file
+ $result .=&hiddenfield('workcopy',$sheettype);
+ 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
+ $result .=&hiddenfield('cell','').
+ &hiddenfield('newformula','');
+ ##
+ ## Create the save and load dialogs
+ my $filename = $spreadsheet->filename();
+ my $truefilename = $filename;
+ if ($spreadsheet->is_default()) {
+ $filename = 'Default';
+ }
+ my $save_dialog = ''.
+ ' '.
+ ''.
+ '';
+ my $makedefault_dialog = '';
+ #
+ my $link = 'Select Spreadsheet File";
+ my $load_dialog = <
+
+
+
+ $link
+
+
+
\n\n";
+ #
+ $result .=<
+
+
+
$load_dialog
+
+
+
$save_dialog
+
$makedefault_dialog
+
+
+
+
+END
+ return ($result,$message);
+}
+
sub handler {
my $r=shift;
#
@@ -142,31 +238,53 @@ sub handler {
$name = $ENV{'form.sname'};
$domain = $ENV{'form.sdomain'};
}
- #
- # Open page, try to prevent browser cache.
- #
- $r->content_type('text/html');
- $r->header_out('Cache-control','no-cache');
- $r->header_out('Pragma','no-cache');
- $r->send_http_header;
##
## 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('