[LON-CAPA-cvs] cvs: loncom /imspackages imsprocessor.pm

raeburn raeburn at source.lon-capa.org
Fri Aug 2 08:56:26 EDT 2013


raeburn		Fri Aug  2 12:56:26 2013 EDT

  Modified files:              
    /loncom/imspackages	imsprocessor.pm 
  Log:
  IMS import to Authoring Space
    - Additional changes to support import of Blackboard Vista question banks 
      (IMS format) containing questions with images.
    - Remove & and % from names of problem files and directories when importing
      webctvista4.
  
  
Index: loncom/imspackages/imsprocessor.pm
diff -u loncom/imspackages/imsprocessor.pm:1.52 loncom/imspackages/imsprocessor.pm:1.53
--- loncom/imspackages/imsprocessor.pm:1.52	Sat Jul 27 22:04:49 2013
+++ loncom/imspackages/imsprocessor.pm	Fri Aug  2 12:56:26 2013
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Processor for IMS Packages
 #
-# $Id: imsprocessor.pm,v 1.52 2013/07/27 22:04:49 raeburn Exp $
+# $Id: imsprocessor.pm,v 1.53 2013/08/02 12:56:26 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -334,7 +334,7 @@
                                     $$resources{$identifier}{file} = $attr->{href};
                                 } else {
                                     push(@{$$hrefs{$identifier}},$attr->{href});
-                                } 
+                                }
                             }
                         } elsif ($cms eq 'angel5') {
                             if ($attr->{href} =~ m/^_assoc\\$identifier\\(.+)$/) {
@@ -371,7 +371,11 @@
                 }
                 if ("@state" eq "manifest webct:ContentObject webct:Name") {
                     if ($cms eq 'webctvista4') {
-                        $$resources{$identifier}{title} = (split(/,/,$text))[-1];
+                        if ($text =~ /,/) {
+                            $$resources{$identifier}{title} = (split(/,/,$text))[-1];
+                        } else {
+                            $$resources{$identifier}{title} = $text;
+                        }
                     }
                 }
               }, "dtext"],
@@ -563,8 +567,8 @@
                                             if (ref($$resources{$$resources{$key}{usedby}}{imagetitle}) eq 'ARRAY') {
                                                 $imgtitle = $$resources{$$resources{$key}{usedby}}{imagetitle}[$i]; 
                                             }
-                                            if (($img =~ /^\Q$filestem\E/i) && ($imgtitle =~ /\Q$extension\E/i)) {
-                                                $copyfile = $img.'_'.$imgtitle;
+                                            if ($imgtitle =~ /\Q$extension\E/i) {
+                                                $copyfile = $imgtitle;
                                                 last;
                                             } elsif ($img =~ /^\Q$filestem\E/i) {
                                                 $copyfile = $img.'.'.$extension;
@@ -2408,6 +2412,7 @@
             @{$$settings{$id}{numids}} = ();
             %{$$allanswers{$id}} = ();
             $$settings{$id}{title} = $attr->{title};
+            $$settings{$id}{title} =~ s/\%/pct_/g;
         }
         if ("@state" eq "questestinterop item presentation flow material mat_extension webct:calculated webct:var") {
             $currvar = $attr->{'webct:name'};
@@ -2642,11 +2647,17 @@
      text_h =>
      [sub {
         my ($text) = @_;
+        $text =~ s/\s*\&\s*/_and_/g;
         if ($currtexttype eq '/text/html') {
             $text =~ s#(<img\ssrc=")([^"]+)">#$1../resfiles/$2#g;
         }
         if ("@state" eq "questestinterop item presentation flow material matimage") {
-            my $imagetitle = (split(/,/,$text))[-1];
+            my $imagetitle;
+            if ($text =~ /,/) {
+                $imagetitle = (split(/,/,$text))[-1];
+            } else {
+                $imagetitle = $text;
+            }
             $$settings{$id}{imagetitle} = $imagetitle;
             push(@{$$resources{$res}{imagetitle}},$imagetitle);
         }
@@ -3474,7 +3485,9 @@
             $probtitle{$id} =~ s/\s+/_/g;
             $probtitle{$id} =~ s/:/_/g;
             $probtitle{$id} =~ s/\//_/g;
-            $probtitle{$id} .= '_'.$id;
+            if ($cms eq 'webctce4') {
+                $probtitle{$id} .= '_'.$id;
+            }
         }
         if (($cms eq 'webctce4' && $container ne 'database') ||
             ($cms eq 'webctvista4'))   {
@@ -3996,7 +4009,7 @@
         if (($cms eq 'webctvista4') && (defined($$settings{$id}{image}))) {
             my $imgsrc = '../../resfiles/'.$$settings{$id}{image};
             if (defined($$settings{$id}{imagetitle})) {
-                $imgsrc .= '_'.$$settings{$id}{imagetitle};
+                $imgsrc = '../../resfiles/'.$$settings{$id}{imagetitle};
             }
             $questionimage = qq|<p><img src="$imgsrc" /></p>|;
         }
@@ -4530,7 +4543,6 @@
             $title =~ s/\s/_/g;
             $title =~ s/:/_/g;
             $title =~ s/\//_/g;
-            $title .= '_'.$id;
             open(PROB,">$destdir/problems/$probdir/$title.problem");
             print PROB $output;
             close PROB;




More information about the LON-CAPA-cvs mailing list