[LON-CAPA-cvs] cvs: loncom /interface lonpdfupload.pm

raeburn raeburn at source.lon-capa.org
Sun Mar 22 19:12:53 EDT 2026


raeburn		Sun Mar 22 23:12:53 2026 EDT

  Modified files:              
    /loncom/interface	lonpdfupload.pm 
  Log:
  - Bug 6121 -- PDF Forms.
    Blocked actions during an exam or timed quiz can include submission of
    PDF forms.
  
  
Index: loncom/interface/lonpdfupload.pm
diff -u loncom/interface/lonpdfupload.pm:1.34 loncom/interface/lonpdfupload.pm:1.35
--- loncom/interface/lonpdfupload.pm:1.34	Tue Mar 17 19:59:26 2026
+++ loncom/interface/lonpdfupload.pm	Sun Mar 22 23:12:53 2026
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # PDF Form Upload Handler
 #
-# $Id: lonpdfupload.pm,v 1.34 2026/03/17 19:59:26 raeburn Exp $
+# $Id: lonpdfupload.pm,v 1.35 2026/03/22 23:12:53 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -56,6 +56,25 @@
         return HTTP_NOT_ACCEPTABLE;
     }
 
+    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('pdfform',$clientip,$cnum,$cdom,'/adm/pdfupload');
+        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})) {
+                &pdfforms_blocked($r,$blocktext);
+                return OK;
+            }
+        }
+    }
+
     # Breadcrumbs
     my $brcrum = [{'href' => '/adm/pdfupload',
                    'text' => 'Upload PDF Form'}];
@@ -587,6 +606,23 @@
     return ($title, $grade);
 }
 
+sub pdfforms_blocked {
+    my ($r,$blocktext) = @_;
+    my $pagetitle = &mt('Upload PDF Form');
+    &Apache::lonhtmlcommon::clear_breadcrumbs();
+    &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/pdfupload',
+                                            text=> $pagetitle});
+    my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs($pagetitle);
+    &Apache::loncommon::content_type($r,'text/html');
+    &Apache::loncommon::no_cache($r);
+    $r->send_http_header;
+    $r->print(&Apache::loncommon::start_page('Upload PDF Form').
+              $breadcrumbs.
+              $blocktext.
+              &Apache::loncommon::end_page());
+    return;
+}
+
 sub parse_grade_answer {
     my ($shortcut) = @_;
     my %answerhash = ('EXACT_ANS' => &mt('You are correct.'),




More information about the LON-CAPA-cvs mailing list