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

sakharuk lon-capa-cvs@mail.lon-capa.org
Mon, 27 Jan 2003 16:01:13 -0000


sakharuk		Mon Jan 27 11:01:13 2003 EDT

  Modified files:              
    /loncom/interface	lonprintout.pm 
  Log:
  Bug 1167 is fixed. The list of problems from the primary sequence now has titles and full URLs (counting from the /res/ which is standard) for the adv users (not student) and only titles for the students. Unfortunately, I could not use $ENV{'user.adv'} to figure out eather user is adv. On my mashine even student is adv user (probably it has to be fixed - I'll try to figure out what is wrong here).
  
  
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.105 loncom/interface/lonprintout.pm:1.106
--- loncom/interface/lonprintout.pm:1.105	Thu Jan 23 15:19:38 2003
+++ loncom/interface/lonprintout.pm	Mon Jan 27 11:01:13 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.105 2003/01/23 20:19:38 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.106 2003/01/27 16:01:13 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -159,11 +159,18 @@
     if ($sequence[0]=~/^uploaded/) {$primary_sequence = '/'.$sequence[0];} 
       else {$primary_sequence = '/res/'.$sequence[0];} 
     my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]);
+    my @titles_master_seq = &titles_coming_from_hash($primary_sequence,$sequence[0]);
+    foreach my $entity (@titles_master_seq) {$entity=~/^(.*)&&/; $entity=$1}
     my @master_seq_view = @master_seq;
-    @master_seq = @master_seq;
-    for (my $i=0;$i<=$#master_seq_view;$i++) {
-	$master_seq_view[$i]=~/\/([^\/]+)$/;
-	$master_seq_view[$i]=$1;
+    if (not $ENV{'request.role'}=~/^st\./) {
+      for (my $i=0;$i<=$#master_seq_view;$i++) {
+	 $master_seq_view[$i]=~/___\d+___(.+)$/;
+	 $master_seq_view[$i]='/'.$1;
+      }
+    } else {
+      for (my $i=0;$i<=$#master_seq_view;$i++) {
+	  $master_seq_view[$i]=' ';
+      }
     }
     $r->print(<<ENDMENUOUT1);
 <input type="hidden" name="url" value="$ENV{'form.url'}">
@@ -192,18 +199,19 @@
     }
 </script>
 <input type=button onClick="checkall()" value="Check All">&nbsp;
-<input type=button onClick="uncheckall()" value="Uncheck">
+<input type=button onClick="uncheckall()" value="Uncheck">&nbsp;
+<input type="submit" value="Submit">
 <p>
 ENDMENUOUT1
     my $inc=0; 
     for (my $i=0;$i<=$#master_seq_view;$i++) {
-      if ($key_to==1 && $master_seq_view[$i]=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
-	$r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '."\n".
-                  $master_seq_view[$i]);
+      if ($key_to==1 && $master_seq[$i]=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
+	$r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '."\n".'<b>'.
+                  $titles_master_seq[$i].'</b>&nbsp;&nbsp;&nbsp;<small>'.$master_seq_view[$i].'</small>');
         $inc++;
-    } elsif ($key_to==0 && $master_seq_view[$i]=~/\.(problem|exam|quiz|assess|survey|form|library|xml|htm|html|page)$/) {
-	$r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '.
-                  $master_seq_view[$i]);
+    } elsif ($key_to==0 && $master_seq[$i]=~/\.(problem|exam|quiz|assess|survey|form|library|xml|htm|html|page)$/) {
+	$r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '."\n".'<b>'.
+                  $titles_master_seq[$i].'</b>&nbsp;&nbsp;&nbsp;<small>'.$master_seq_view[$i].'</small>');
         $inc++;
       }
     }
@@ -797,6 +805,69 @@
     return @resourcelist;
 }
 
+
+sub titles_coming_from_hash {
+
+    my ($mainsequence,$symb) = @_;
+    my @resourcelist = ();
+    my $mapid = $hash{'map_pc_'.$mainsequence};
+    my $mapstart = $hash{'map_start_'.$mainsequence};
+    my $mapfinish = $hash{'map_finish_'.$mainsequence};
+    my ($presymb);
+    if ($symb) {
+	($presymb)=split(/___/,$symb);
+    } else {
+	$presymb=$mainsequence;
+	$presymb=~s|^/res/||;
+    }
+    $presymb = $presymb.'___';
+    my $current_resource = $mapstart;
+    while ($current_resource ne $mapfinish) {
+	if (not $hash{'src_'.$current_resource}=~/\.sequence$/) {
+	    my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}};
+            if ($rid=~/,/) {
+		my @rid = split /,/, $rid;
+		foreach my $rid_element (@rid) {
+		    if ($rid_element =~ m/^$mapid\.(\d*)/) {
+			$rid = $1; 
+			last;
+		    }
+		}
+	    } else {
+		$rid =~ m/^$mapid\.(\d*)/;
+                $rid = $1;  
+	    }
+	    $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
+	    $symb = $presymb.$rid.'___'.$1;
+	    push @resourcelist,$hash{'title_'.$current_resource}.'&&'.$symb;
+	} else {
+	    push @resourcelist,&titles_coming_from_hash($hash{'src_'.$current_resource});
+	}
+	$current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};
+    }
+    #needs if final resource in the map (type="finish") contains something
+    if (not $hash{'src_'.$current_resource}=~/\.sequence$/) {
+		    my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}};
+            if ($rid=~/,/) {
+		my @rid = split /,/, $rid;
+		foreach my $rid_element (@rid) {
+		    if ($rid_element =~ m/^$mapid\.(\d*)/) {
+			$rid = $1; 
+			last;
+		    }
+		}
+	    } else {
+		$rid =~ m/^$mapid\.(\d*)/;
+                $rid = $1;  
+	    }
+	    $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
+	    $symb = $presymb.$rid.'___'.$1;
+	push @resourcelist,$hash{'title_'.$current_resource}.'&&'.$symb;
+    } else {
+	push @resourcelist,&titles_coming_from_hash($hash{'src_'.$current_resource});
+    }
+    return @resourcelist;
+}
 
 sub latex_header_footer_remove {
     my $text = shift;