[LON-CAPA-cvs] cvs: loncom /interface lonpdfupload.pm
raeburn
raeburn@source.lon-capa.org
Thu, 18 Mar 2010 14:50:15 -0000
raeburn Thu Mar 18 14:50:15 2010 EDT
Modified files:
/loncom/interface lonpdfupload.pm
Log:
- Ensure user is in course context.
- use File::MMagic to confirm a PDF file was uploaded.
- Breadcrumb trail for two step process: 1. upload form, 2. processing result.
- Check permission from canuse_pdfforms course config.
- if none set, default to default for domain of course.
Index: loncom/interface/lonpdfupload.pm
diff -u loncom/interface/lonpdfupload.pm:1.15 loncom/interface/lonpdfupload.pm:1.16
--- loncom/interface/lonpdfupload.pm:1.15 Thu Mar 18 13:16:11 2010
+++ loncom/interface/lonpdfupload.pm Thu Mar 18 14:50:15 2010
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# PDF Form Upload Handler
#
-# $Id: lonpdfupload.pm,v 1.15 2010/03/18 13:16:11 raeburn Exp $
+# $Id: lonpdfupload.pm,v 1.16 2010/03/18 14:50:15 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,6 +33,7 @@
use Apache::lonhtmlcommon();
use Apache::loncommon();
use Apache::lonlocal;
+use File::MMagic;
use CAM::PDF;
use strict;
@@ -43,18 +44,58 @@
$r->send_http_header;
return OK if $r->header_only;
+ # Needs to be in a course
+ if (!$env{'request.course.fn'}) {
+ # Not in a course
+ $env{'user.error.msg'}="/adm/pdfupload:bre:0:0:Cannot upload PDF forms unless in a course";
+ return HTTP_NOT_ACCEPTABLE;
+ }
+
# Breadcrumbs
my $brcrum = [{'href' => '/adm/pdfupload',
'text' => 'Upload PDF Form'}];
+ if ($env{'form.Uploaded'} && $env{'form.file'}) {
+ push(@{$brcrum},{'href' => '',
+ 'text' => 'PDF upload result'});
+ }
$r->print(&Apache::loncommon::start_page('Upload PDF Form',
undef,
{'bread_crumbs' => $brcrum,})
);
+ if ($env{'request.course.id'}) {
+ my $permission = $env{'course.'.$env{'request.course.id'}.'.canuse_pdfforms'};
+ if ($permission eq '') {
+ my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
+ $permission = $domdefs{'canuse_pdfforms'};
+ }
+ unless ($permission) {
+ $r->print('<p class="LC_warning">'.
+ &mt('Upload of PDF forms is not permitted for this course.').
+ '</p>'.
+ &Apache::loncommon::end_page());
+ return OK;
+ }
+ } else {
+ $r->print('<p class="LC_warning">'.
+ &mt('Could not determine identity of this course. you may need to [_1]re-select[_2] the course.','<a href="/adm/roles">','</a>').
+ '</p>'.
+ &Apache::loncommon::end_page());
+ return OK;
+ }
+
# if a file was upload
if($env{'form.Uploaded'} && $env{'form.file'}) {
- $r->print(&processPDF);
+ my $mm = new File::MMagic;
+ my $mime_type = $mm->checktype_contents($env{'form.file'});
+ if ($mime_type eq 'application/pdf') {
+ $r->print(&processPDF);
+ } else {
+ $r->print('<p class="LC_error">'
+ .&mt("The uploaded file does not appear to be a PDF file.")
+ .'</p>');
+ }
} else {
# print upload form
$r->print(&get_javascripts);