Diff for /loncom/interface/spreadsheet/lonspreadsheet.pm between versions 1.55.6.1 and 1.56

version 1.55.6.1, 2011/10/09 00:28:03 version 1.56, 2010/05/03 16:41:54
Line 106  sub file_dialogs { Line 106  sub file_dialogs {
         $spreadsheet->filename($env{'form.savefilename'});          $spreadsheet->filename($env{'form.savefilename'});
         my $save_status = $spreadsheet->save();          my $save_status = $spreadsheet->save();
         if ($save_status ne 'ok') {          if ($save_status ne 'ok') {
             $message .= '<span class="LC_error">'.              $message .= "An error occurred while saving the spreadsheet".
                 &mt('An error occurred while saving the spreadsheet. The error is: [_1].',                  "There error is:".$save_status;
                     $save_status).'</span>';  
         } else {          } else {
             $message .= '<span class="LC_info">'.&mt('Spreadsheet saved as: [_1] .',              $message .= "Spreadsheet saved as ".$spreadsheet->filename();
                         '<span class="LC_filename">'.$spreadsheet->filename().'</span>').  
                         '</span>';  
         }          }
     } elsif (exists($env{'form.newformula'}) &&       } elsif (exists($env{'form.newformula'}) && 
              exists($env{'form.cell'})       &&                exists($env{'form.cell'})       && 
Line 203  END Line 200  END
 sub handler {  sub handler {
     my $r=shift;      my $r=shift;
     #      #
     # Overload checking  
     #  
     # Check this server  
     my $loaderror=&Apache::lonnet::overloaderror($r);  
     if ($loaderror) { return $loaderror; }  
     # Check the course homeserver  
     $loaderror= &Apache::lonnet::overloaderror($r,  
                       $env{'course.'.$env{'request.course.id'}.'.home'});  
 #    if ($loaderror) { return $loaderror; }   
     #  
     # HTML Header      # HTML Header
     #      #
     if ($r->header_only) {      if ($r->header_only) {
Line 230  sub handler { Line 217  sub handler {
             $r->uri.":opa:0:0:Cannot modify spreadsheet";              $r->uri.":opa:0:0:Cannot modify spreadsheet";
         return HTTP_NOT_ACCEPTABLE;           return HTTP_NOT_ACCEPTABLE; 
     }      }
     my ($sheettype) = ($r->uri=~/\/(\w+)$/);  
     my $courseid = $env{'request.course.id'};      my $courseid = $env{'request.course.id'};
   
     ##  
     ## 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.  
     }  
   
     #      #
     # Do not allow users without vgr or mgr priv to continue unless       # Do not allow students to continue if standard or external grading is in
     # grading type is set to spreadsheet.      # effect.
     #      #
       if ($env{'request.role'} =~ /^st\./) {
     if ((!$allowed_to_view) && (!$allowed_to_edit)) {          if ($env{'course.'.$courseid.'.grading'} eq 'standard' ||
         if ($env{'course.'.$courseid.'.grading'} eq 'spreadsheet') {      $env{'course.'.$courseid.'.grading'} eq 'external' ) {
             if ($sheettype ne 'studentcalc') {              return HTTP_NOT_ACCEPTABLE;
                 $r->internal_redirect('/adm/studentcalc');  
                 return OK;  
             }  
         } else {  
             $r->internal_redirect('/adm/quickgrades');  
             return OK;  
         }          }
     }      }
     #      #
Line 280  sub handler { Line 243  sub handler {
     }      }
     #      #
     # Determine basic information about the spreadsheet      # Determine basic information about the spreadsheet
       my ($sheettype) = ($r->uri=~/\/(\w+)$/);
     #      #
     my $symb   = undef;      my $symb   = undef;
     $symb = $env{'form.usymb'} if (exists($env{'form.usymb'}));      $symb = $env{'form.usymb'} if (exists($env{'form.usymb'}));
     my $name   = $env{'user.name'};      my $name   = $env{'user.name'};
     my $domain = $env{'user.domain'};      my $domain = $env{'user.domain'};
     my $warning;  
     if (exists($env{'form.sname'}) && $env{'form.sname'} ne '') {      if (exists($env{'form.sname'}) && $env{'form.sname'} ne '') {
         if (($env{'form.sname'} ne $env{'user.name'}) ||          $name   = $env{'form.sname'};
             ($env{'form.sdomain'} ne $env{'user.domain'})) {          $domain = $env{'form.sdomain'};
             if (($allowed_to_view) || ($allowed_to_edit)) {  
                 if (&Apache::lonnet::homeserver($env{'form.sname'},$env{'form.sdomain'}) ne 'no_host') {  
                     $name   = $env{'form.sname'};  
                     $domain = $env{'form.sdomain'};  
                 } else {  
                     $warning = &mt('Requested user: "[_1]" does not exist; your own sheet is displayed instead.',$env{'form.sname'}.':'.$env{'form.sdomain'});  
                 }  
             } else {  
                 $warning = &mt('Your current role is not permitted to display this sheet for the requested user: "[_1]"; your own sheet is displayed instead.',$env{'form.sname'}.':'.$env{'form.sdomain'});  
             }  
         }  
     }      }
     $env{'form.sname'} = $name;      $env{'form.sname'} = $name;
     $env{'form.sdomain'} = $domain;      $env{'form.sdomain'} = $domain;
Line 314  sub handler { Line 266  sub handler {
                                                     $env{'request.course.id'});                                                      $env{'request.course.id'});
     }      }
   
       ##
       ## 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       # Only those able to view others grades will be allowed to continue 
     # if they are not requesting their own.      # if they are not requesting their own.
     if ($sheettype eq 'classcalc') {      if ($sheettype eq 'classcalc') {
         if (!$allowed_to_view) {          if (! $allowed_to_view) {
             $r->internal_redirect('/adm/studentcalc');      $env{'user.error.msg'}=
             return OK;   $r->uri.":vgr:0:0:Access Permission Denied";
       return HTTP_NOT_ACCEPTABLE; 
  }   }
     }      }
     if ((($name   ne $env{'user.name'} ) ||      if ((($name   ne $env{'user.name'} ) ||
Line 425  ENDSCRIPT Line 393  ENDSCRIPT
           text  => 'Spreadsheet',            text  => 'Spreadsheet',
           faq   => 134,            faq   => 134,
           bug   => 'Spreadsheet'});            bug   => 'Spreadsheet'});
     my $settingslink = &Apache::lonhtmlcommon::coursepreflink(&mt('Grade display settings'),  
                                                               'grading');  
     &Apache::lonhtmlcommon::add_breadcrumb_tool('advtools',$settingslink);  
     $r->print(&Apache::loncommon::start_page('Grades Spreadsheet',$js).      $r->print(&Apache::loncommon::start_page('Grades Spreadsheet',$js).
               &Apache::lonhtmlcommon::breadcrumbs('Spreadsheet',                &Apache::lonhtmlcommon::breadcrumbs('Spreadsheet',
   'Spreadsheet_About'));    'Spreadsheet_About').
     #                '<form action="'.$r->uri.'" name="sheet" method="post">');
     # Open the form  
     #  
     if ($warning) {  
         $r->print('<p class="LC_info">'.$warning.'</p>');  
     }  
     $r->print('<form action="'.$r->uri.'" name="sheet" method="post">');  
     $r->print(&hiddenfield('sname'  ,$env{'form.sname'}).      $r->print(&hiddenfield('sname'  ,$env{'form.sname'}).
               &hiddenfield('sdomain',$env{'form.sdomain'}).                &hiddenfield('sdomain',$env{'form.sdomain'}).
               &hiddenfield('usymb'  ,$env{'form.usymb'}));                &hiddenfield('usymb'  ,$env{'form.usymb'}));

Removed from v.1.55.6.1  
changed lines
  Added in v.1.56


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>