--- loncom/interface/spreadsheet/lonspreadsheet.pm 2011/09/26 15:48:06 1.60 +++ loncom/interface/spreadsheet/lonspreadsheet.pm 2021/12/14 12:59:21 1.61.6.3 @@ -1,5 +1,5 @@ # -# $Id: lonspreadsheet.pm,v 1.60 2011/09/26 15:48:06 raeburn Exp $ +# $Id: lonspreadsheet.pm,v 1.61.6.3 2021/12/14 12:59:21 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -241,6 +241,29 @@ sub handler { } # + # Check if display of course gradebook is blocked + # + + if ($env{'request.course.id'}) { + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $clientip = &Apache::lonnet::get_requestor_ip($r); + my ($blocked,$blocktext) = + &Apache::loncommon::blocking_status('grades',$clientip,$cnum,$cdom); + if ($blocked) { + my $checkrole = "cm./$cdom/$cnum"; + if ($env{'request.course.sec'} ne '') { + $checkrole .= "/$env{'request.course.sec'}"; + } + unless ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) && + ($env{'request.role'} !~ m{^st\./$cdom/$cnum})) { + &Apache::lonquickgrades::grades_blocked($r,$blocktext,'spreadsheet'); + return OK; + } + } + } + + # # Do not allow users without vgr or mgr priv to continue unless # grading type is set to spreadsheet. # @@ -276,9 +299,21 @@ sub handler { $symb = $env{'form.usymb'} if (exists($env{'form.usymb'})); my $name = $env{'user.name'}; my $domain = $env{'user.domain'}; + my $warning; if (exists($env{'form.sname'}) && $env{'form.sname'} ne '') { - $name = $env{'form.sname'}; - $domain = $env{'form.sdomain'}; + if (($env{'form.sname'} ne $env{'user.name'}) || + ($env{'form.sdomain'} ne $env{'user.domain'})) { + 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.sdomain'} = $domain; @@ -333,10 +368,10 @@ sub handler { ## my $js; if ($allowed_to_edit) { - my %lt=( + my %lt=&Apache::lonlocal::texthash( 'ce' => 'Cell', - 'ac' => 'Accept', - 'dc' => 'Discard Changes' + 'ac' => 'Save', + 'dc' => 'Cancel' ); my $extra_javascript = &Apache::loncommon::browser_and_searcher_javascript(); @@ -365,14 +400,14 @@ sub handler { // cellformula may contain less-than and greater-than symbols, so // we need to escape them? edit_text +='$cell_edit_start'; - edit_text += '
$cell_edit_end'; if (editwin != null && !(editwin.closed) ) { @@ -406,16 +441,16 @@ ENDSCRIPT bug => 'Spreadsheet'}); $r->print(&Apache::loncommon::start_page('Grades Spreadsheet',$js). &Apache::lonhtmlcommon::breadcrumbs('Spreadsheet', - 'Spreadsheet_About')); - - # - # Tabs - # - &Apache::lonquickgrades::startGradeScreen($r,'spreadsheet'); + 'Spreadsheet_About'). + &Apache::lonhtmlcommon::coursepreflink(&mt('Grade display settings'), + 'grading')); # # Open the form # + if ($warning) { + $r->print(''.$warning.'
'); + } $r->print(''); - &Apache::lonquickgrades::endGradeScreen($r); $r->print(&Apache::loncommon::end_page()); $spreadsheet->clear_package(); return OK;