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

albertel lon-capa-cvs@mail.lon-capa.org
Thu, 08 Aug 2002 17:03:20 -0000


This is a MIME encoded message

--albertel1028826200
Content-Type: text/plain

albertel		Thu Aug  8 13:03:20 2002 EDT

  Modified files:              
    /loncom/interface	lonparmset.pm 
  Log:
  - commit Mark Lucas's lonparmset
  
  
--albertel1028826200
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20020808130320.txt"

Index: loncom/interface/lonparmset.pm
diff -u loncom/interface/lonparmset.pm:1.56 loncom/interface/lonparmset.pm:1.57
--- loncom/interface/lonparmset.pm:1.56	Thu Aug  8 09:44:17 2002
+++ loncom/interface/lonparmset.pm	Thu Aug  8 13:03:20 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to set parameters for assessments
 #
-# $Id: lonparmset.pm,v 1.56 2002/08/08 13:44:17 www Exp $
+# $Id: lonparmset.pm,v 1.57 2002/08/08 17:03:20 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -54,6 +54,8 @@
 use Apache::Constants qw(:common :http REDIRECT);
 use Apache::loncommon;
 use GDBM_File;
+use Apache::lonhomework;
+use Apache::lonxml;
 
 
 my %courseopt;
@@ -70,6 +72,7 @@
 my $udom;
 my $uhome;
 my $csec;
+my $coursename;
 
 # -------------------------------------------- Figure out a cascading parameter
 
@@ -229,12 +232,19 @@
         }
     }
 
+    function openWindow(url, wdwName, w, h, toolbar,scrollbar) {
+        var options = "width=" + w + ",height=" + h + ",";
+        options += "resizable=yes,scrollbars="+scrollbar+",status=no,";
+        options += "menubar=no,toolbar="+toolbar+",location=no,directories=no";
+        var newWin = window.open(url, wdwName, options);
+        newWin.focus();
+    }
 </script>
 </head>
 <body bgcolor="#FFFFFF" onUnload="pclose()">
-<h1>Set Course Parameters</h1>
+<h1>Set Course Parameters for Course:
+$ENV{'course.'.$ENV{'request.course.id'}.'.description'}</h1>
 <form method="post" action="/adm/parmset" name="envform">
-<h2>Course: $ENV{'course.'.$ENV{'request.course.id'}.'.description'}</h2>
 <h3>Course Environment</h3>
 <input type="submit" name="crsenv" value="Set Course Environment">
 </form>
@@ -260,45 +270,109 @@
 
 sub print_row {
     my ($r,$which,$part,$name,$rid,$default,$type,$display,$defbgone,
-	$defbgtwo)=@_;
+	$defbgtwo,$parmlev)=@_;
     my ($result,@outpar)=&parmval($$part{$which}.'.'.$$name{$which},
 				  $rid,$$default{$which});
-    $r->print("<td bgcolor=".$defbgtwo.
-	      '>'.$$part{$which}.'</td><td bgcolor='.$defbgone.
-	      '>'.$$display{$which}.'</td>');
+    my $parm=$$display{$which};
+
+    if ($parmlev eq 'full' || $parmlev eq 'brief') {
+        $r->print('<td bgcolor='.$defbgtwo.' align="center">'
+                  .$$part{$which}.'</td>');
+    } else {    
+        $parm=~s|\[.*\]\s||g;
+    }
+
+    $r->print('<td bgcolor='.$defbgone.'>'.$parm.'</td>');
+   
     my $thismarker=$which;
     $thismarker=~s/^parameter\_//;
     my $mprefix=$rid.'&'.$thismarker.'&';
 
-    &print_td($r,11,'#FFDDDD',$result,\@outpar,$mprefix,$_,$type,$display);
-    &print_td($r,10,'#FFDDDD',$result,\@outpar,$mprefix,$_,$type,$display);
-    &print_td($r,9,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
-    &print_td($r,8,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
-    &print_td($r,7,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
-    if ($csec) {
-	&print_td($r,6,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);
-	&print_td($r,5,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);
-	&print_td($r,4,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);
-    }
-    if ($uname) {
-	&print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
-	&print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
-	&print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
-    }
-    $r->print('<td bgcolor=#CCCCFF>'.&valout($outpar[$result],$$type{$which}).'</td>');
+    if ($parmlev eq 'general') {
+
+        if ($uname) {
+            &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+        } elsif ($csec) {
+            &print_td($r,6,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display); 
+        } else {
+            &print_td($r,9,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display); 
+        }
+    } elsif ($parmlev eq 'map') {
+
+        if ($uname) {
+            &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+        } elsif ($csec) {
+            &print_td($r,5,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);
+        } else {
+            &print_td($r,8,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+        }
+    } else {
+
+        &print_td($r,11,'#FFDDDD',$result,\@outpar,$mprefix,$_,$type,$display);
+
+        if ($parmlev eq 'brief') {
+
+           &print_td($r,7,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+
+           if ($csec) {
+               &print_td($r,4,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);
+           }
+           if ($uname) {
+               &print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+           }
+        } else {
+
+           &print_td($r,10,'#FFDDDD',$result,\@outpar,$mprefix,$_,$type,$display);
+           &print_td($r,9,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+           &print_td($r,8,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+           &print_td($r,7,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+
+           if ($csec) {
+               &print_td($r,6,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);
+               &print_td($r,5,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);
+               &print_td($r,4,$defbgtwo,$result,\@outpar,$mprefix,$_,$type,$display);
+           }
+           if ($uname) {
+               &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+               &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+               &print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$_,$type,$display);
+           }
+        } # end of $brief if/else
+    } # end of $parmlev if/else
+
+    if ($parmlev eq 'full' || $parmlev eq 'brief') {
+    $r->print('<td bgcolor=#CCCCFF align="center">'.
+        &valout($outpar[$result],$$type{$which}).'</td>');
+
+}
     my $sessionval=&Apache::lonnet::EXT('resource.'.$$part{$which}.
-					'.'.$$name{$which},$symbp{$rid});
-    $r->print('<td bgcolor=#999999><font color=#FFFFFF>'.
-	      &valout($sessionval,$$type{$which}).'&nbsp;'.
-	      '</font></td>');
+                                        '.'.$$name{$which},$symbp{$rid});
+    $r->print('<td bgcolor=#999999 align="center"><font color=#FFFFFF>'.
+                  &valout($sessionval,$$type{$which}).'&nbsp;'.
+                  '</font></td>');
     $r->print('</tr>');
+    $r->print("\n");
 }
-
 sub print_td {
     my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$type,$display)=@_;
-    $r->print('<td bgcolor='.(($result==$which)?'"#AAFFAA"':$defbg).'>'.
-	      &plink($$type{$value},$$display{$value},$$outpar[$which],
-		     $mprefix."$which",'parmform.pres','psub').'</td>');
+    $r->print('<td bgcolor='.(($result==$which)?'"#AAFFAA"':$defbg).
+              ' align="center">'.
+              &plink($$type{$value},$$display{$value},$$outpar[$which],
+                     $mprefix."$which",'parmform.pres','psub').'</td>'."\n");
+}
+
+sub get_env_multiple {
+    my ($name) = @_;
+    my @values;
+    if (defined($ENV{$name})) {
+        # exists is it an array
+        if (ref($ENV{$name})) {
+            @values=@{ $ENV{$name} };
+        } else {
+            $values[0]=$ENV{$name};
+        }
+    }
+    return(@values);
 }
 
 sub assessparms {
@@ -307,6 +381,16 @@
 # -------------------------------------------------------- Variable declaration
     my %allkeys;
     my %allmaps;
+    my %alllevs;
+
+    $alllevs{'Resource Level'}='full';
+#    $alllevs{'Resource Level [BRIEF]'}='brief';
+    $alllevs{'Map Level'}='map';
+    $alllevs{'Course Level'}='general';
+
+    my %allparms;
+    my %allparts;
+
     my %defp;
     %courseopt=();
     %useropt=();
@@ -322,9 +406,24 @@
     $udom=$ENV{'form.udom'};
     unless ($udom) { $udom=$r->dir_config('lonDefDomain'); }
 
-    my $pscat=$ENV{'form.pscat'};
+    my @pscat=&get_env_multiple('form.pscat');
     my $pschp=$ENV{'form.pschp'};
+    my @psprt=&get_env_multiple('form.psprt');
+    my $showoptions=$ENV{'form.showoptions'};
+
     my $pssymb='';
+    my $parmlev='';
+    my $prevvisit=$ENV{'form.prevvisit'};
+
+#    unless ($parmlev==$ENV{'form.parmlev'}) {
+#        $parmlev = 'full';
+#    }
+ 
+    unless ($ENV{'form.parmlev'}) {
+        $parmlev = 'map';
+    } else {
+        $parmlev = $ENV{'form.parmlev'};
+    }
 
 # ----------------------------------------------- Was this started from grades?
 
@@ -333,12 +432,14 @@
 	my $url=$ENV{'form.url'};
 	$url=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--;
 	$pssymb=&Apache::lonnet::symbread($url);
-	$pscat='all';
+	@pscat='all';
 	$pschp='';
+        $parmlev = 'full';
     } elsif ($ENV{'form.symb'}) {
 	$pssymb=$ENV{'form.symb'};
-	$pscat='all';
+	@pscat='all';
 	$pschp='';
+        $parmlev = 'full';
     } else {
 	$ENV{'form.url'}='';
     }
@@ -410,39 +511,44 @@
 		$ids[$#ids+1]=$id;
 		$typep{$id}=$1;
 		$keyp{$id}='';
-		foreach (split(/\,/,
-			       &Apache::lonnet::metadata($srcf,'keys'))) {
-		    if ($_=~/^parameter\_(.*)/) {
-			my $key=$_;
-			my $allkey=$1;
-			$allkey=~s/\_/\./;
-			my $display=
-			    &Apache::lonnet::metadata($srcf,$key.'.display');
-			unless ($display) {
-			    $display=
-				&Apache::lonnet::metadata($srcf,$key.'.name');
-			}
-			$allkeys{$allkey}=$display;
-			if ($allkey eq $fcat) {
-			    $defp{$id}=
-				&Apache::lonnet::metadata($srcf,$key);
-			}
-			if ($keyp{$id}) {
-			    $keyp{$id}.=','.$key;
-			} else {
-			    $keyp{$id}=$key;
-			}
+		foreach (split(/\,/,&Apache::lonnet::metadata($srcf,'keys'))) {
+		  if ($_=~/^parameter\_(.*)/) {
+                    my $key=$_;
+                    my $allkey=$1;
+                    $allkey=~s/\_/\./g;
+                    my $display= &Apache::lonnet::metadata($srcf,$key.'.display');
+                    my $name=&Apache::lonnet::metadata($srcf,$key.'.name');
+                    my $part= &Apache::lonnet::metadata($srcf,$key.'.part');
+                    my $parmdis = $display;
+                    $parmdis =~ s|(\[Part.*$)||g;
+                    my $partkey = $part;
+                    $partkey =~ tr|_|.|;
+                    $allparms{$name} = $parmdis;
+                    $allparts{$part} = "[Part $part]";
+                    $allkeys{$allkey}=$display;
+                    if ($allkey eq $fcat) {
+		        $defp{$id}= &Apache::lonnet::metadata($srcf,$key);
+		    }
+		    if ($keyp{$id}) {
+		        $keyp{$id}.=','.$key;
+		    } else {
+		        $keyp{$id}=$key;
 		    }
+		  }
 		}
 		$mapp{$id}=
 		    &Apache::lonnet::declutter($bighash{'map_id_'.$mapid});
+                $mapp{$mapid}=$mapp{$id};
 		$allmaps{$mapid}=$mapp{$id};
 		$symbp{$id}=$mapp{$id}.
 			'___'.$resid.'___'.
 			    &Apache::lonnet::declutter($srcf);
+                $symbp{$mapid}=$mapp{$id}.'___(all)';
 	    }
 	}
     }
+    $mapp{'0.0'} = '';
+    $symbp{'0.0'} = '';
 # ---------------------------------------------------------- Anything to store?
     if ($ENV{'form.pres_marker'}) {
 	my ($sresid,$spnam,$snum)=split(/\&/,$ENV{'form.pres_marker'});
@@ -535,164 +641,487 @@
 	    1*$aparm<=>1*$bparm;
 	}
     } @ids;
-
+#----------------------------------------------- if all selected, fill in array
+    if ($pscat[0] eq "all" || !@pscat) {@pscat = (keys %allparms);}
+    if ($psprt[0] eq "all" || !@psprt) {@psprt = (keys %allparts);}
 # ------------------------------------------------------------------ Start page
     &startpage($r,$id,$udom,$csec,$uname);
 #    if ($ENV{'form.url'}) {
 #	$r->print('<input type="hidden" value="'.$ENV{'form.url'}.
 #		  '" name="url"><input type="hidden" name="command" value="set">');
 #    }
+    $r->print('<input type="hidden" value="true" name="prevvisit">');
+
     foreach ('tolerance','date_default','date_start','date_end',
 	     'date_interval','int','float','string') {
 	$r->print('<input type="hidden" value="'.
 		  $ENV{'form.recent_'.$_}.'" name="recent_'.$_.'">');
     }
 
-    $r->print('<h2>'.$message.'</h2><table><tr><td>Sort list by</td><td>');
-    $r->print('<select name="fcat">');
-    $r->print('<option value="">Enclosing Map</option>');
-    foreach (reverse sort keys %allkeys) {
-	$r->print('<option value="'.$_.'"');
-	if ($fcat eq $_) { $r->print(' selected'); }
-	$r->print('>'.$allkeys{$_}.'</option>');
+    $r->print('<h2>'.$message.'</h2><table>');
+                        
+    $r->print('<tr><td><hr /></td></tr>');
+
+    my $submitmessage;
+    if (($prevvisit) || ($pschp) || ($pssymb)) {
+        $submitmessage = "Update Display";
+    } else {
+        $submitmessage = "Display";
     }
     if (!$pssymb) {
-	$r->print('</select></tr><tr><td>Select Enclosing Map</td><td><select name=pschp>');
-	$r->print('<option value=all>All Maps</option>');
-	foreach (sort keys %allmaps) {
-	    $r->print('<option value="'.$_.'"');
-	    if (($pssymb=~/^$allmaps{$_}/) || 
-		($pschp eq $_)) { $r->print(' selected'); }
-	    $r->print('>'.$allmaps{$_}.'</option>');
-	}
+        $r->print('<tr><td>Select Parameter Level</td><td>');
+        $r->print('<select name="parmlev">');
+        foreach (reverse sort keys %alllevs) {
+            $r->print('<option value="'.$alllevs{$_}.'"');
+            if ($parmlev eq $alllevs{$_}) {
+               $r->print(' selected'); 
+            }
+            $r->print('>'.$_.'</option>');
+        }
+        $r->print("</select></td>\n");
+    
+        $r->print('<td><input type="submit" name="dis" value="'.$submitmessage.'"></td>');
+
+        $r->print('</tr><tr><td><hr /></td>');
+
+        $r->print('<tr><td>Select Enclosing Map</td>');
+        $r->print('<td colspan="2"><select name="pschp">');
+        $r->print('<option value="all">All Maps</option>');
+        foreach (sort {$allmaps{$a} cmp $allmaps{$b}} keys %allmaps) {
+            $r->print('<option value="'.$_.'"');
+            if (($pschp eq $_)) { $r->print(' selected'); }
+            $r->print('>/res/'.$allmaps{$_}.'</option>');
+        }
+        $r->print("</select></td></tr>\n");
     } else {
-	my ($map,$id,$resource)=split(/___/,$pssymb);
-	$r->print('<tr><td>Specfic Resource</td><td>&nbsp;</td></tr>');
-	$r->print('<input type="hidden" value="'.$pssymb.'" name="symb">');
-    }
-    $r->print('</select></td></tr><tr><td>Select Parameter</td><td><select name=pscat>');
-    $r->print('<option value=all>All Parameters</option>');
-    foreach (reverse sort keys %allkeys) {
-	$r->print('<option value="'.$_.'"');
-	if ($pscat eq $_) { $r->print(' selected'); }
-	$r->print('>'.$allkeys{$_}.'</option>');
+        my ($map,$id,$resource)=split(/___/,$pssymb);
+        $r->print("<tr><td>Specific Resource</td><td>$resource</td>");
+        $r->print('<td><input type="submit" name="dis" value="'.$submitmessage.'"></td>');
+        $r->print('</tr>');
+        $r->print('<input type="hidden" value="'.$pssymb.'" name="symb">');
+    }
+
+    $r->print('<tr><td colspan="3"><hr /><input type="checkbox"');
+    if ($showoptions eq 'show') {$r->print(" checked ");}
+    $r->print(' name="showoptions" value="show" onclick="form.submit();">Show More Options<hr /></td></tr>');
+#    $r->print("<tr><td>Show: $showoptions</td></tr>");
+#    $r->print("<tr><td>pscat: @pscat</td></tr>");
+#    $r->print("<tr><td>psprt: @psprt</td></tr>");
+#    $r->print("<tr><td>fcat:  $fcat</td></tr>");
+
+    if ($showoptions eq 'show') {
+        my $tempkey;
+
+        $r->print('<tr><td colspan="3" align="center">Select Parameters to View</td></tr>');
+
+        $r->print('<tr><td colspan="2"><table>');
+        $r->print('<tr><td><input type="checkbox" name="pscat" value="all"');
+        $r->print(' checked') unless (@pscat);
+        $r->print('>All Parameters</td>');
+
+        my $cnt=0;
+
+        foreach $tempkey (sort { $allparms{$a} cmp $allparms{$b} }
+                      keys %allparms ) {
+            ++$cnt;
+            $r->print('</tr><tr>') unless ($cnt%2);
+            $r->print('<td><input type="checkbox" name="pscat" ');
+            $r->print('value="'.$tempkey.'"');
+            if ($pscat[0] eq "all" || grep $_ eq $tempkey, @pscat) {
+                $r->print(' checked');
+            }
+            $r->print('>'.$allparms{$tempkey}.'</td>');
+        }
+        $r->print('</tr></table>');
+
+#        $r->print('<tr><td>Select Parts</td><td>');
+        $r->print('<td><select multiple name="psprt" size="5">');
+        $r->print('<option value="all"');
+        $r->print(' selected') unless (@psprt);
+        $r->print('>All Parts</option>');
+        foreach $tempkey (sort keys %allparts) {
+            unless ($tempkey =~ /\./) {
+                $r->print('<option value="'.$tempkey.'"');
+                if ($psprt[0] eq "all" ||  grep $_ == $tempkey, @psprt) {
+                    $r->print(' selected');
+                }
+                $r->print('>'.$allparts{$tempkey}.'</option>');
+            }
+        }
+        $r->print('</select></td></tr><tr><td colspan="3"><hr /></td></tr>');
+
+        $r->print('<tr><td>Sort list by</td><td>');
+        $r->print('<select name="fcat">');
+        $r->print('<option value="">Enclosing Map</option>');
+        foreach (sort keys %allkeys) {
+            $r->print('<option value="'.$_.'"');
+            if ($fcat eq $_) { $r->print(' selected'); }
+            $r->print('>'.$allkeys{$_}.'</option>');
+        }
+        $r->print('</select></td>');
+
+        $r->print('</tr><tr><td colspan="3"><hr /></td></tr>');
+
+    } else { # hide options - include any necessary extras here
+
+        $r->print('<input type="hidden" name="fcat" value="'.$fcat.'">'."\n");
+
+        unless (@pscat) {
+          foreach (keys %allparms ) {
+            $r->print('<input type="hidden" name="pscat" value="'.$_.'">'."\n");
+          }
+        } else {
+          foreach (@pscat) {
+            $r->print('<input type="hidden" name="pscat" value="'.$_.'">'."\n");
+          }
+        }
+
+        unless (@psprt) {
+          foreach (keys %allparts ) {
+            $r->print('<input type="hidden" name="psprt" value="'.$_.'">'."\n");
+          }
+        } else {
+          foreach (@psprt) {
+            $r->print('<input type="hidden" name="psprt" value="'.$_.'">'."\n");
+          }
+        }
+
     }
-    $r->print('</select></td></tr></table><br><input name=dis type="submit" value="Display">');
-    if (($pscat) || ($pschp) || ($pssymb)) {
+    $r->print('</table>');
+
+    my @temp_psprt;
+    map {
+         my $t = $_;
+         push(@temp_psprt,
+         grep {eval (/^$t\./ || ($_ == $t))} (keys %allparts));
+    } @psprt;
+
+    @psprt = @temp_psprt;
+
+    my @temp_pscat;
+    map {
+        my $cat = $_;
+        push(@temp_pscat, map { $_.'.'.$cat } @psprt);
+    } @pscat;
+
+    @pscat = @temp_pscat;
+
+    if (($prevvisit) || ($pschp) || ($pssymb)) {
 # ----------------------------------------------------------------- Start Table
-	my $catmarker='parameter_'.$pscat;
-	$catmarker=~s/\./\_/g;
-	my $coursespan=$csec?8:5;
-	my $csuname=$ENV{'user.name'};
-	my $csudom=$ENV{'user.domain'};
-	$r->print(<<ENDTABLEHEAD);
-<p><table border=2>
-<tr><td colspan=5></td>
-<th colspan=$coursespan>Any User</th>
-ENDTABLEHEAD
-	if ($uname) {
-	    $r->print("<th colspan=3 rowspan=2>User $uname at Domain $udom</th>");
-	}
-	$r->print(<<ENDTABLETWO);
+        my @catmarker=map { tr|.|_|; 'parameter_'.$_; } @pscat;
+        my $csuname=$ENV{'user.name'};
+        my $csudom=$ENV{'user.domain'};
+
+
+        if ($parmlev eq 'full' || $parmlev eq 'brief') {
+
+           my $coursespan=$csec?8:5;
+           $r->print('<p><table border=2>');
+           $r->print('<tr><td colspan=5></td>');
+           $r->print('<th colspan='.($coursespan).'>Any User</th>');
+           if ($uname) {
+               $r->print("<th colspan=3 rowspan=2>");
+               $r->print("User $uname at Domain $udom</th>");
+           }
+           $r->print(<<ENDTABLETWO);
 <th rowspan=3>Parameter in Effect</th>
 <th rowspan=3>Current Session Value<br>($csuname at $csudom)</th>
-</tr><tr><td colspan=5></td>
-<th colspan=2>Resource Level</th>
+</tr><tr><td colspan=5></td><th colspan=2>Resource Level</th>
 <th colspan=3>in Course</th>
 ENDTABLETWO
-	if ($csec) {
-	    $r->print("<th colspan=3>in Section/Group $csec</th>");
-	}
-	$r->print(<<ENDTABLEHEADFOUR);
+           if ($csec) {
+                $r->print("<th colspan=3>in Section/Group $csec</th>");
+           }
+           $r->print(<<ENDTABLEHEADFOUR);
 </tr><tr><th>Assessment URL and Title</th><th>Type</th>
 <th>Enclosing Map</th><th>Part No.</th><th>Parameter Name</th>
 <th>default</th><th>from Enclosing Map</th>
 <th>general</th><th>for Enclosing Map</th><th>for Resource</th>
 ENDTABLEHEADFOUR
-	if ($csec) {
-	    $r->print('<th>general</th><th>for Enclosing Map</th><th>for Resource</th>');
-	}
-	if ($uname) {
-	    $r->print('<th>general</th><th>for Enclosing Map</th><th>for Resource</th>');
-	}
-	$r->print('</tr>');
-	my $defbgone='';
-	my $defbgtwo='';
-	foreach (@ids) {
-	    my $rid=$_;
-	    my ($inmapid)=($rid=~/\.(\d+)$/);
-	    if (($pschp eq 'all') || ($allmaps{$pschp} eq $mapp{$rid}) ||
-		($pssymb eq $symbp{$rid})) {
+
+           if ($csec) {
+               $r->print('<th>general</th><th>for Enclosing Map</th><th>for Resource</th>');
+           }
+
+           if ($uname) {
+               $r->print('<th>general</th><th>for Enclosing Map</th><th>for Resource</th>');
+           }
+
+           $r->print('</tr>');
+
+           my $defbgone='';
+           my $defbgtwo='';
+
+           foreach (@ids) {
+
+                my $rid=$_;
+                my ($inmapid)=($rid=~/\.(\d+)$/);
+
+                if (($pschp eq 'all') || ($allmaps{$pschp} eq $mapp{$rid}) ||
+                    ($pssymb eq $symbp{$rid})) {
 # ------------------------------------------------------ Entry for one resource
-		if ($defbgone eq '"E0E099"') {
-		    $defbgone='"E0E0DD"';
-		} else {
-		    $defbgone='"E0E099"';
-		}
-		if ($defbgtwo eq '"FFFF99"') {
-		    $defbgtwo='"FFFFDD"';
-		} else {
-		    $defbgtwo='"FFFF99"';
-		}
-		my $thistitle='';
-		my %name=   ();
-		undef %name;
-		my %part=   ();
-		my %display=();
-		my %type=   ();
-		my %default=();
-		my $uri=&Apache::lonnet::declutter($bighash{'src_'.$rid});
-		
-		foreach (split(/\,/,$keyp{$rid})) {
-		    if (($_ eq $catmarker) || ($pscat eq 'all')) {
-			$part{$_}=&Apache::lonnet::metadata($uri,$_.'.part');
-			$name{$_}=&Apache::lonnet::metadata($uri,$_.'.name');
-			$display{$_}=&Apache::lonnet::metadata($uri,$_.'.display');
-			unless ($display{$_}) { $display{$_}=''; }
-			$display{$_}.=' ('.$name{$_}.')';
-			$default{$_}=&Apache::lonnet::metadata($uri,$_);
-			$type{$_}=&Apache::lonnet::metadata($uri,$_.'.type');
-			$thistitle=&Apache::lonnet::metadata($uri,$_.'.title');
-		    }
-		}
-		my $totalparms=scalar keys %name;
-		if ($totalparms>0) {
-		    my $firstrow=1;
-		    $r->print('<tr><td bgcolor='.$defbgone.
-			      ' rowspan='.$totalparms.'><tt><font size=-1>'.
-			      join(' / ',split(/\//,$uri)).
-			      '</font></tt><p><b>'.
-			      $bighash{'title_'.$rid});
-		    if ($thistitle) {
-			$r->print(' ('.$thistitle.')');
-		    }
-		    $r->print('</b></td>');
-		    $r->print('<td bgcolor='.$defbgtwo.
-			      ' rowspan='.$totalparms.'>'.$typep{$rid}.'</td>');
-		    $r->print('<td bgcolor='.$defbgone.
-			      ' rowspan='.$totalparms.'><tt><font size=-1>'.
-			      join(' / ',split(/\//,$mapp{$rid})).'</font></tt></td>');
-		    foreach (sort keys %name) {
-			unless ($firstrow) {
-			    $r->print('<tr>');
-			} else {
-			    $firstrow=0;
-			}
-			&print_row($r,$_,\%part,\%name,$rid,\%default,
-				   \%type,\%display,$defbgone,$defbgtwo);
-		    }
-		}
+                    if ($defbgone eq '"E0E099"') {
+                        $defbgone='"E0E0DD"';
+                    } else {
+                        $defbgone='"E0E099"';
+                    }
+                    if ($defbgtwo eq '"FFFF99"') {
+                        $defbgtwo='"FFFFDD"';
+                    } else {
+                        $defbgtwo='"FFFF99"';
+                    }
+                    my $thistitle='';
+                    my %name=   ();
+                    undef %name;
+                    my %part=   ();
+                    my %display=();
+                    my %type=   ();
+                    my %default=();
+                    my $uri=&Apache::lonnet::declutter($bighash{'src_'.$rid});
+
+                    foreach (split(/\,/,$keyp{$rid})) {
+                        my $tempkeyp = $_;
+                        if (grep $_ eq $tempkeyp, @catmarker) {
+                          $part{$_}=&Apache::lonnet::metadata($uri,$_.'.part');
+                          $name{$_}=&Apache::lonnet::metadata($uri,$_.'.name');
+                          $display{$_}=&Apache::lonnet::metadata($uri,$_.'.display');
+                          unless ($display{$_}) { $display{$_}=''; }
+                          $display{$_}.=' ('.$name{$_}.')';
+                          $default{$_}=&Apache::lonnet::metadata($uri,$_);
+                          $type{$_}=&Apache::lonnet::metadata($uri,$_.'.type');
+                          $thistitle=&Apache::lonnet::metadata($uri,$_.'.title');
+                        }
+                    }
+                    my $totalparms=scalar keys %name;
+                    if ($totalparms>0) {
+                        my $firstrow=1;
+
+                        $r->print('<tr><td bgcolor='.$defbgone.
+                             ' rowspan='.$totalparms.
+                             '><tt><font size=-1>'.
+                             join(' / ',split(/\//,$uri)).
+                             '</font></tt><p><b>'.
+                             "<a href=\"javascript:openWindow('/res/".$uri.
+                             "', 'metadatafile', '450', '500', 'no', 'yes')\";".
+                             " TARGET=_self>$bighash{'title_'.$rid}");
+
+                        if ($thistitle) {
+                            $r->print(' ('.$thistitle.')');
+                        }
+                        $r->print('</a></b></td>');
+                        $r->print('<td bgcolor='.$defbgtwo.
+                                      ' rowspan='.$totalparms.'>'.$typep{$rid}.
+                                      '</td>');
+
+                        $r->print('<td bgcolor='.$defbgone.
+                                      ' rowspan='.$totalparms.
+                                      '><tt><font size=-1>');
+
+                        $r->print(' / res / ');
+                        $r->print(join(' / ', split(/\//,$mapp{$rid})));
+
+                        $r->print('</font></tt></td>');
+
+                        foreach (sort keys %name) {
+                            unless ($firstrow) {
+                                $r->print('<tr>');
+                            } else {
+                                undef $firstrow;
+                            }
+
+                            &print_row($r,$_,\%part,\%name,$rid,\%default,
+                                       \%type,\%display,$defbgone,$defbgtwo,
+                                       $parmlev);
+                        }
+                    }
+                }
+            } # end foreach ids
 # -------------------------------------------------- End entry for one resource
-	    }
-	}
-	$r->print('</table>');
+            $r->print('</table>');
+        } # end of  brief/full
+#--------------------------------------------------- Entry for parm level map
+        if ($parmlev eq 'map') {
+            my $defbgone = '"E0E099"';
+            my $defbgtwo = '"FFFF99"';
+
+            my %maplist;
+
+            if ($pschp eq 'all') {
+                %maplist = %allmaps; 
+            } else {
+                %maplist = ($pschp => $mapp{$pschp});
+            }
+
+#-------------------------------------------- for each map, gather information
+            my $mapid;
+            foreach $mapid (keys %maplist) {
+                my $maptitle = $allmaps{$mapid};
+
+#-----------------------  loop through ids and get all parameter types for map
+#-----------------------------------------          and associated information
+                my %name = ();
+                my %part = ();
+                my %display = ();
+                my %type = ();
+                my %default = ();
+                my $map = 0;
+
+#		$r->print("Catmarker: @catmarker<br />\n");
+               
+                foreach (@ids) {
+                  ($map)=(/([\d]*?)\./);
+                  my $rid = $_;
+        
+#                  $r->print("$mapid:$map:   $rid <br /> \n");
+
+                  if ($map eq $mapid) {
+                    my $uri=&Apache::lonnet::declutter($bighash{'src_'.$rid});
+#                    $r->print("Keys: $keyp{$rid} <br />\n");
+
+#--------------------------------------------------------------------
+# @catmarker contains list of all possible parameters including part #s
+# $fullkeyp contains the full part/id # for the extraction of proper parameters
+# $tempkeyp contains part 0 only (no ids - ie, subparts)
+# When storing information, store as part 0
+# When requesting information, request from full part
+#-------------------------------------------------------------------
+                    foreach (split(/\,/,$keyp{$rid})) {
+                      my $tempkeyp = $_;
+                      my $fullkeyp = $tempkeyp;
+                      $tempkeyp =~ s/_[\d_]+_/_0_/;
+                      
+                      if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
+                        $part{$tempkeyp}="0";
+                        $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name');
+                        $display{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');
+                        unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
+                        $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
+                        $display{$tempkeyp} =~ s/_[\d_]+_/_0_/;
+                        $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);
+                        $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');
+                      }
+                    } # end loop through keys
+                  }
+                } # end loop through ids
+                                 
+#---------------------------------------------------- print header information
+                $r->print(<<ENDMAPONE);
+<center><h4>
+<font color="red">Set Defaults for All Resources in map
+<i>$maptitle</i><br />
+Specifically for
+ENDMAPONE
+                if ($uname) {
+                    my %name=&Apache::lonnet::userenvironment($udom,$uname,
+                      ('firstname','middlename','lastname','generation', 'id'));
+                    my $person=$name{'firstname'}.' '.$name{'middlename'}.' '
+                           .$name{'lastname'}.' '.$name{'generation'};
+                    $r->print("User <i>$uname \($person\) </i> in \n");
+                } else {
+                    $r->print("<i>all</i> users in \n");
+                }
+            
+                if ($csec) {$r->print("Section <i>$csec</i> of \n")};
+
+                $r->print("<i>$coursename</i><br />");
+                $r->print("</font></h4>\n");
+#---------------------------------------------------------------- print table
+                $r->print('<p><table border="2">');
+                $r->print('<tr><th>Parameter Name</th>');
+                $r->print('<th>Default Value</th>');
+                $r->print('<th>Parameter in Effect</th></tr>');
+
+	        foreach (sort keys %name) {
+                    &print_row($r,$_,\%part,\%name,$mapid,\%default,
+                           \%type,\%display,$defbgone,$defbgtwo,
+                           $parmlev);
+#                    $r->print("<tr><td>resource.$part{$_}.$name{$_},$symbp{$mapid}</td></tr>\n");
+                }
+                $r->print("</table></center>");
+            } # end each map
+        } # end of $parmlev eq map
+#--------------------------------- Entry for parm level general (Course level)
+        if ($parmlev eq 'general') {
+            my $defbgone = '"E0E099"';
+            my $defbgtwo = '"FFFF99"';
+
+#-------------------------------------------- for each map, gather information
+            my $mapid="0.0";
+#-----------------------  loop through ids and get all parameter types for map
+#-----------------------------------------          and associated information
+            my %name = ();
+            my %part = ();
+            my %display = ();
+            my %type = ();
+            my %default = ();
+               
+            foreach (@ids) {
+                my $rid = $_;
+        
+                my $uri=&Apache::lonnet::declutter($bighash{'src_'.$rid});
+
+#--------------------------------------------------------------------
+# @catmarker contains list of all possible parameters including part #s
+# $fullkeyp contains the full part/id # for the extraction of proper parameters
+# $tempkeyp contains part 0 only (no ids - ie, subparts)
+# When storing information, store as part 0
+# When requesting information, request from full part
+#-------------------------------------------------------------------
+                foreach (split(/\,/,$keyp{$rid})) {
+                  my $tempkeyp = $_;
+                  my $fullkeyp = $tempkeyp;
+                  $tempkeyp =~ s/_[\d_]+_/_0_/;
+                  if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
+                    $part{$tempkeyp}="0";
+                    $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name');
+                    $display{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');
+                    unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
+                    $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
+                    $display{$tempkeyp} =~ s/_[\d_]+_/_0_/;
+                    $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);
+                    $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');
+                  }
+                } # end loop through keys
+            } # end loop through ids
+                                 
+#---------------------------------------------------- print header information
+            $r->print(<<ENDMAPONE);
+<center><h4>
+<font color="red">Set Defaults for All Resources in Course
+<i>$coursename</i><br />
+ENDMAPONE
+            if ($uname) {
+                my %name=&Apache::lonnet::userenvironment($udom,$uname,
+                  ('firstname','middlename','lastname','generation', 'id'));
+                my $person=$name{'firstname'}.' '.$name{'middlename'}.' '
+                       .$name{'lastname'}.' '.$name{'generation'};
+                $r->print(" User <i>$uname \($person\) </i> \n");
+            } else {
+                $r->print("<i>ALL</i> USERS \n");
+            }
+            
+            if ($csec) {$r->print("Section <i>$csec</i>\n")};
+            $r->print("</font></h4>\n");
+#---------------------------------------------------------------- print table
+            $r->print('<p><table border="2">');
+            $r->print('<tr><th>Parameter Name</th>');
+            $r->print('<th>Default Value</th>');
+            $r->print('<th>Parameter in Effect</th></tr>');
+
+	    foreach (sort keys %name) {
+                &print_row($r,$_,\%part,\%name,$mapid,\%default,
+                       \%type,\%display,$defbgone,$defbgtwo,$parmlev);
+#                    $r->print("<tr><td>resource.$part{$_}.$name{$_},$symbp{$mapid}</td></tr>\n");
+            }
+            $r->print("</table></center>");
+        } # end of $parmlev eq general
     }
     $r->print('</form></body></html>');
     untie(%bighash);
     untie(%parmhash);
-}
+} # end sub assessparms
 
-# Set course environment parameters
+# ------------------------------------------- Set course environment parameters
 sub crsenv {
     my $r=shift;
     my $setoutput='';
@@ -757,11 +1186,9 @@
              'pageseparators'  => '<b>Visibly Separate Items on Pages</b><br>'.
                                  '("<tt>yes</tt>" for visible separation)',
              'pch.roles.denied'=> '<b>Disallow Resource Discussion for '.
-                                  'Roles</b><br>"<tt>st</tt>": '.
-                                  'student, "<tt>ta</tt>": '.
-                                  'TA, "<tt>in</tt>": '.
-                                  'instructor;<br><tt>role,role,...</tt>) '.
-	       Apache::loncommon::help_open_topic("Course_Disable_Discussion"),
+                                  'Roles</b> ' . 
+	   Apache::loncommon::help_open_topic("Course_Disable_Discussion")
+	                          ,
              'pch.users.denied' => 
                           '<b>Disallow Resource Discussion for Users</b><br>'.
                                  '(<tt>user:domain,user:domain,...</tt>)',
@@ -869,6 +1296,8 @@
 
     if (($ENV{'request.course.id'}) && 
 	(&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}))) {
+ 
+        $coursename=$ENV{'course.'.$ENV{'request.course.id'}.'.description'};
 
 	unless (($ENV{'form.crsenv'}) || (!$ENV{'request.course.fn'})) {
 # --------------------------------------------------------- Bring up assessment

--albertel1028826200--