--- loncom/homework/daxesave.pm	2016/02/17 00:05:14	1.3
+++ loncom/homework/daxesave.pm	2016/12/13 21:37:35	1.5
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Convert and save a problem from Daxe.
 #
-# $Id: daxesave.pm,v 1.3 2016/02/17 00:05:14 damieng Exp $
+# $Id: daxesave.pm,v 1.5 2016/12/13 21:37:35 damieng Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -44,7 +44,7 @@ sub handler {
     $request->content_type('text/plain');
     
     # path should be in the form "/daxeopen/priv/..."
-    # or ^/daxeopen/uploaded/[^/]+/[^/]+/supplemental/.*html?$
+    # or ^/daxeopen/uploaded/[^/]+/[^/]+/.*html?$
     my $path = $env{'form.path'};
     $path =~ s/^\/daxeopen//;
     
@@ -60,11 +60,11 @@ sub handler {
                 }
             }
         }
-    } elsif ($path =~ m|^/uploaded/[^/]+/[^/]+/supplemental/|) {
+    } elsif ($path =~ m|^/uploaded/[^/]+/[^/]+/|) {
         if ($env{'user.name'} ne '' && $env{'user.domain'} ne '' && $env{'request.course.id'}) {
             $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
             $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
-            if ($path =~ m|^/uploaded/\Q$cdom\E/\Q$cnum\E/supplemental/| && $path !~ /\.\./) {
+            if ($path =~ m|^/uploaded/\Q$cdom\E/\Q$cnum\E/| && $path !~ /\.\./) {
                 if (&Apache::lonnet::allowed('mdc', $env{'request.course.id'})) {
                     $allowed = 1;
                 }
@@ -82,18 +82,24 @@ sub handler {
 
     my $contents = $env{'form.file'};
     
-    try {
-        $contents = &Apache::xml_to_loncapa::convert_file($contents);
-    } catch {
-        $request->print("error\nconvert failed for $path: $_");
-        return OK;
-    };
+    my $mode;
+    if ($path =~ /\.(task|problem|exam|quiz|assess|survey|library|xml|html|htm|xhtml|xhtm)$/) {
+        try {
+            $contents = &Apache::xml_to_loncapa::convert_file($contents);
+        } catch {
+            $request->print("error\nconvert failed for $path: $_");
+            return OK;
+        };
+        $mode = '>:encoding(UTF-8)';
+    } else {
+        $mode = '>';
+    }
     
     my $filebak = $newpath.".bak";
     if (-e $newpath) {
         copy($newpath, $filebak); # errors ignored
     }
-    open my $out, '>:encoding(UTF-8)', $newpath;
+    open my $out, $mode, $newpath;
     print $out $contents;
     close $out;