--- loncom/interface/spreadsheet/lonspreadsheet.pm 2005/04/07 06:56:23 1.40 +++ loncom/interface/spreadsheet/lonspreadsheet.pm 2006/04/06 20:24:13 1.44 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.40 2005/04/07 06:56:23 albertel Exp $ +# $Id: lonspreadsheet.pm,v 1.44 2006/04/06 20:24:13 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -100,6 +100,7 @@ sub file_dialogs { my $message = ''; ## ## Deal with saving the spreadsheet + $spreadsheet->check_formulas_loaded(); if ((exists($env{'form.save'}) || exists($env{'form.makedefault'})) && exists($env{'form.savefilename'})) { $spreadsheet->filename($env{'form.savefilename'}); @@ -263,6 +264,26 @@ sub handler { } $env{'form.sname'} = $name; $env{'form.sdomain'} = $domain; + my $section = &Apache::lonnet::getsection($domain,$name, + $env{'request.course.id'}); + my $group; + my @groups = (); + if (($env{'user.name'} eq $name) && ($env{'user.domain'} eq $domain)) { + @groups=&Apache::lonnet::sort_course_groups( + $env{'request.course.groups'}, + $env{'request.course.id'}); + } else { + my $grouplist = &Apache::lonnet::get_users_groups($domain,$name, + $env{'request.course.id'}); + if ($grouplist) { + @groups=&Apache::lonnet::sort_course_groups($grouplist, + $env{'request.course.id'}); + } + } + if (@groups > 0) { + $group = $groups[0]; + } + ## ## Check permissions my $allowed_to_edit = &Apache::lonnet::allowed('mgr', @@ -437,13 +458,16 @@ ENDSCRIPT &Apache::Spreadsheet::initialize_spreadsheet_package(); my $spreadsheet = undef; if ($sheettype eq 'classcalc') { - $spreadsheet = Apache::classcalc->new($name,$domain,$filename,undef); + $spreadsheet = Apache::classcalc->new($name,$domain,$filename,undef, + $section,$group); } elsif ($sheettype eq 'studentcalc') { - $spreadsheet = Apache::studentcalc->new($name,$domain,$filename,undef); + $spreadsheet = Apache::studentcalc->new($name,$domain,$filename,undef, + $section,$group); } elsif ($sheettype eq 'assesscalc' && defined($symb) && $allowed_to_edit) { - $spreadsheet = Apache::assesscalc->new($name,$domain,$filename,$symb); + $spreadsheet = Apache::assesscalc->new($name,$domain,$filename,$symb, + $section,$group); } else { return HTTP_NOT_ACCEPTABLE; } @@ -527,6 +551,7 @@ END $spreadsheet->display($r); } $r->print(''); + $spreadsheet->clear_package(); return OK; }