--- loncom/interface/spreadsheet/lonspreadsheet.pm 2004/02/20 17:17:32 1.33
+++ loncom/interface/spreadsheet/lonspreadsheet.pm 2006/04/06 16:43:49 1.43
@@ -1,5 +1,5 @@
#
-# $Id: lonspreadsheet.pm,v 1.33 2004/02/20 17:17:32 matthew Exp $
+# $Id: lonspreadsheet.pm,v 1.43 2006/04/06 16:43:49 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -100,9 +100,10 @@ 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'});
+ $spreadsheet->check_formulas_loaded();
+ 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 +111,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 +206,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 +220,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;
}
}
@@ -240,37 +241,42 @@ sub handler {
# Get query string for limited number of parameters
#
&Apache::loncommon::get_unprocessed_cgi
- ($ENV{'QUERY_STRING'},['sname','sdomain','usymb','filename','recalc']);
+ ($ENV{'QUERY_STRING'},['sname','sdomain','usymb','filename','recalc',
+ 'output_format','not_first_run']);
#
# 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'})) {
- $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;
+ my $section = &Apache::lonnet::getsection($domain,$name,
+ $env{'request.course.id'});
##
## 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.
@@ -280,20 +286,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 '' ) {
- my $stu_sec = &Apache::lonnet::usection($domain,$name,
- $ENV{'request.course.id'});
- if ($stu_sec ne $ENV{'request.course.sec'}) {
- $ENV{'user.error.msg'}=
+ 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'}=
$r->uri.":vgr:0:0:Requested student not in your section.";
return HTTP_NOT_ACCEPTABLE;
}
@@ -368,52 +374,64 @@ ENDSCRIPT
&Apache::lonhtmlcommon::clear_breadcrumbs();
&Apache::lonhtmlcommon::add_breadcrumb
({href => $r->uri,
- title => &mt('Spreadsheet'),
- text => &mt('Spreadsheet'),
+ title => 'Spreadsheet',
+ text => 'Spreadsheet',
faq => 134,
bug => 'Spreadsheet'});
$r->print(''.&Apache::loncommon::bodytag('Grades Spreadsheet').
- &Apache::lonhtmlcommon::breadcrumbs(undef,&mt('Spreadsheet')).
+ &Apache::lonhtmlcommon::breadcrumbs(undef,'Spreadsheet').
'