version 1.55, 2009/07/08 17:55:10
|
version 1.62, 2013/01/08 15:48:51
|
Line 64 use Apache::lonnet;
|
Line 64 use Apache::lonnet;
|
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::loncoursedata(); |
use Apache::loncoursedata(); |
|
use Apache::lonquickgrades(); |
use HTML::Entities(); |
use HTML::Entities(); |
|
|
## |
## |
Line 106 sub file_dialogs {
|
Line 107 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 .= "An error occurred while saving the spreadsheet". |
$message .= '<span class="LC_error">'. |
"There error is:".$save_status; |
&mt('An error occurred while saving the spreadsheet. The error is: [_1].', |
|
$save_status).'</span>'; |
} else { |
} else { |
$message .= "Spreadsheet saved as ".$spreadsheet->filename(); |
$message .= '<span class="LC_info">'.&mt('Spreadsheet saved as: [_1] .', |
|
'<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 200 END
|
Line 204 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 227 sub handler {
|
Line 221 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 students to continue if standard or external grading is in |
# Do not allow users without vgr or mgr priv to continue unless |
# effect. |
# grading type is set to spreadsheet. |
# |
# |
if ($env{'request.role'} =~ /^st\./) { |
|
if ($env{'course.'.$courseid.'.grading'} eq 'standard' || |
if ((!$allowed_to_view) && (!$allowed_to_edit)) { |
$env{'course.'.$courseid.'.grading'} eq 'external' ) { |
if ($env{'course.'.$courseid.'.grading'} eq 'spreadsheet') { |
return HTTP_NOT_ACCEPTABLE; |
if ($sheettype ne 'studentcalc') { |
|
$r->internal_redirect('/adm/studentcalc'); |
|
return OK; |
|
} |
|
} else { |
|
$r->internal_redirect('/adm/quickgrades'); |
|
return OK; |
} |
} |
} |
} |
# |
# |
Line 253 sub handler {
|
Line 271 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 '') { |
$name = $env{'form.sname'}; |
if (($env{'form.sname'} ne $env{'user.name'}) || |
$domain = $env{'form.sdomain'}; |
($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.sname'} = $name; |
$env{'form.sdomain'} = $domain; |
$env{'form.sdomain'} = $domain; |
Line 276 sub handler {
|
Line 305 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) { |
$env{'user.error.msg'}= |
$r->internal_redirect('/adm/studentcalc'); |
$r->uri.":vgr:0:0:Access Permission Denied"; |
return OK; |
return HTTP_NOT_ACCEPTABLE; |
|
} |
} |
} |
} |
if ((($name ne $env{'user.name'} ) || |
if ((($name ne $env{'user.name'} ) || |
Line 405 ENDSCRIPT
|
Line 418 ENDSCRIPT
|
bug => 'Spreadsheet'}); |
bug => 'Spreadsheet'}); |
$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">'); |
|
|
# |
|
# Tabs |
|
# |
|
&Apache::lonquickgrades::startGradeScreen($r,'spreadsheet'); |
|
|
|
# |
|
# 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'})); |
Line 428 ENDSCRIPT
|
Line 453 ENDSCRIPT
|
if (exists($env{'form.recalc'})) { |
if (exists($env{'form.recalc'})) { |
&Apache::loncoursedata::delete_caches($env{'requres.course.id'}); |
&Apache::loncoursedata::delete_caches($env{'requres.course.id'}); |
} |
} |
if ($env{'form.recalc'} eq 'ilovewastingtime') { |
if ($env{'form.recalc'} eq 'expireallsheets') { |
&Apache::lonnet::logthis('spreadsheet expired: entire course'); |
&Apache::lonnet::logthis('spreadsheet expired: entire course'); |
# expire ALL spreadsheets |
# expire ALL spreadsheets |
&Apache::lonnet::expirespread('','','studentcalc'); |
&Apache::lonnet::expirespread('','','studentcalc'); |
Line 533 END
|
Line 558 END
|
if ($allowed_to_view) { |
if ($allowed_to_view) { |
$r->print('<td>'. |
$r->print('<td>'. |
&Apache::loncommon::help_open_topic("Spreadsheet_About", |
&Apache::loncommon::help_open_topic("Spreadsheet_About", |
'Spreadsheet Help'). |
&mt('Spreadsheet Help')). |
'</td>'); |
'</td>'); |
} |
} |
if ($allowed_to_edit) { |
if ($allowed_to_edit) { |
$r->print('<td>'. |
$r->print('<td>'. |
&Apache::loncommon::help_open_topic("Spreadsheet_Editing", |
&Apache::loncommon::help_open_topic("Spreadsheet_Editing", |
'Editing Help'). |
&mt('Editing Help')). |
'</td>'); |
'</td>'); |
} |
} |
$r->print('</tr></table>'); |
$r->print('</tr></table>'); |
Line 548 END
|
Line 573 END
|
$r->print(&hiddenfield('filename',$filename)); |
$r->print(&hiddenfield('filename',$filename)); |
# |
# |
# Keep track of the number of times we have been called, sort of. |
# Keep track of the number of times we have been called, sort of. |
$r->print(&hiddenfield('not_first_run','whatever')); |
$r->print(&hiddenfield('not_first_run','1')); |
# |
# |
if (exists($env{'form.not_first_run'}) || $sheettype ne 'classcalc') { |
if (exists($env{'form.not_first_run'}) || $sheettype ne 'classcalc') { |
$r->print($spreadsheet->get_html_title()); |
$r->print($spreadsheet->get_html_title()); |
Line 558 END
|
Line 583 END
|
$r->rflush(); |
$r->rflush(); |
$spreadsheet->display($r); |
$spreadsheet->display($r); |
} |
} |
$r->print('</form>'.&Apache::loncommon::end_page()); |
$r->print('</form>'); |
|
&Apache::lonquickgrades::endGradeScreen($r); |
|
$r->print(&Apache::loncommon::end_page()); |
$spreadsheet->clear_package(); |
$spreadsheet->clear_package(); |
return OK; |
return OK; |
} |
} |