[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /homework lonhomework.pm

raeburn raeburn at source.lon-capa.org
Mon Apr 3 09:11:47 EDT 2017


raeburn		Mon Apr  3 13:11:47 2017 EDT

  Modified files:              (Branch: version_2_11_X)
    /loncom/homework	lonhomework.pm 
  Log:
  - For 2.11
    - Backport 1.366, 1.367 (part), 1.368
  
  
Index: loncom/homework/lonhomework.pm
diff -u loncom/homework/lonhomework.pm:1.344.2.7 loncom/homework/lonhomework.pm:1.344.2.8
--- loncom/homework/lonhomework.pm:1.344.2.7	Sun Sep 18 21:37:25 2016
+++ loncom/homework/lonhomework.pm	Mon Apr  3 13:11:47 2017
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Homework handler
 #
-# $Id: lonhomework.pm,v 1.344.2.7 2016/09/18 21:37:25 raeburn Exp $
+# $Id: lonhomework.pm,v 1.344.2.8 2017/04/03 13:11:47 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1370,12 +1370,31 @@
         &renderpage($request,$dest);
         return;
     }
+    my $errormsg;
     if ($env{'form.template'}) {
-	my $file = $env{'form.template'};
-	my $dest = &Apache::lonnet::filelocation("",$request->uri);
-	&File::Copy::copy($file,$dest);
-	&renderpage($request,$dest);
-	return;
+        my $file;
+        my ($extension) = ($env{'form.template'} =~ /\.(\w+)$/);
+        if ($extension) {
+            my @files = &get_template_list($extension);
+            foreach my $poss (@files) {
+                if (ref($poss) eq 'ARRAY') {
+                    if ($env{'form.template'} eq $poss->[0]) {
+                        $file = $env{'form.template'};
+                        last;
+                    }
+                }
+            }
+            if ($file) {
+                my $dest = &Apache::lonnet::filelocation("",$request->uri);
+                &File::Copy::copy($file,$dest);
+                &renderpage($request,$dest);
+                return;
+            } else {
+                $errormsg = '<p class="LC_error">'.&mt('Invalid template file.').'</p>';
+            }
+        } else {
+            $errormsg = '<p class="LC_error">'.&mt('Invalid template file; template needs to be a .problem, .library, or .task file.').'</p>';
+        }
     }
 
     my ($extension) = ($request->uri =~ m/\.(\w+)$/);
@@ -1392,7 +1411,6 @@
     } else {
 	my $url=&HTML::Entities::encode($request->uri,'<>&"');
 	my $dest = &Apache::lonnet::filelocation("",$request->uri);
-	my $errormsg;
 	my $instructions;
         my $brcrum = [{'href' => &Apache::loncommon::authorspace($request->uri),
                        'text' => 'Authoring Space'},
@@ -1645,15 +1663,13 @@
 
 sub helpmenu_datastructure {
 
-    my $width = 500;
-    my $height = 600;
-
+    # filename, title, width, height
     my $helpers = [
-                    ['Problem_LON-CAPA_Functions', &mt('Script Functions')],
-                    ['Greek_Symbols', &mt('Greek Symbols')],
-                    ['Other_Symbols', &mt('Other Symbols')],
-                    ['Authoring_Output_Tags', &mt('Output Tags')],
-                    ['Authoring_Multilingual_Problems', &mt('Languages')],
+                    ['Problem_LON-CAPA_Function.hlp', &mt('Script Functions'), 800, 600],
+                    ['Greek_Symbols.hlp', &mt('Greek Symbols'), 500, 600],
+                    ['Other_Symbols.hlp', &mt('Other Symbols'), 500, 600],
+                    ['Authoring_Output_Tags.hlp', &mt('Output Tags'), 800, 600],
+                    ['Authoring_Multilingual_Problems.hlp', &mt('Languages'), 800, 600],
                    ];
 
     my $help_structure = [];
@@ -1661,7 +1677,15 @@
     foreach my $count (0..(scalar(@{$helpers})-1)) {
         my $filename = $helpers->[$count]->[0];
         my $title = $helpers->[$count]->[1];
-        my $href = &HTML::Entities::encode("javascript:openMyModal('/adm/help/$filename.hlp',$width,$height,'yes');");
+        my $width = $helpers->[$count]->[2];
+        my $height = $helpers->[$count]->[3];
+        if ($width eq '') {
+            $width = 500;
+        }
+        if ($height eq '') {
+            $height = 600;
+        }
+        my $href = &HTML::Entities::encode("javascript:openMyModal('/adm/help/$filename',$width,$height,'yes');");
         push @{$help_structure}, [$href, $title, undef];
     }
 




More information about the LON-CAPA-cvs mailing list