--- loncom/interface/lonpdfupload.pm 2010/03/18 13:16:11 1.15 +++ loncom/interface/lonpdfupload.pm 2010/03/18 14:50:15 1.16 @@ -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::lonnet; use Apache::lonhtmlcommon(); use Apache::loncommon(); use Apache::lonlocal; +use File::MMagic; use CAM::PDF; use strict; @@ -43,18 +44,58 @@ sub handler() { $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('

'. + &mt('Upload of PDF forms is not permitted for this course.'). + '

'. + &Apache::loncommon::end_page()); + return OK; + } + } else { + $r->print('

'. + &mt('Could not determine identity of this course. you may need to [_1]re-select[_2] the course.','',''). + '

'. + &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('

' + .&mt("The uploaded file does not appear to be a PDF file.") + .'

'); + } } else { # print upload form $r->print(&get_javascripts);