--- rat/lonratedt.pm	2004/04/26 16:56:26	1.57
+++ rat/lonratedt.pm	2005/04/07 06:56:27	1.65
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Edit Handler for RAT Maps
 #
-# $Id: lonratedt.pm,v 1.57 2004/04/26 16:56:26 www Exp $
+# $Id: lonratedt.pm,v 1.65 2005/04/07 06:56:27 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -187,8 +187,10 @@ sub mapread {
     undef @links;
     undef @resources;
     undef @order;
+    undef @resparms;
     @resources=('');
     @order=();
+    @resparms=();
 
     my ($outtext,$errtext)=&Apache::lonratsrv::loadmap($fn,'');
     if ($errtext) { return ($errtext,2); }
@@ -391,6 +393,10 @@ sub attemptread {
 # --------------------------------------------------------- Build up RAT screen
 sub ratedt {
   my ($r,$url)=@_;
+  my $frameset = '<frameset rows="1,70,*" border="0">';
+  if ($env{'environment.remote'} eq 'off') {
+      $frameset = '<frameset rows="1,250,*" border="0">';
+  }
   $r->print(<<ENDDOCUMENT);
 
 <html>
@@ -399,9 +405,9 @@ sub ratedt {
     var flag=0;
 </script>
 </head>
-<frameset rows="1,50,*" border=0>
+$frameset
 <frame name=server src="$url/loadonly/ratserver" noresize noscroll>
-<frame name=code src="/adm/rat/code.html">
+<frame name=code src="$url/loadonly/adveditmenu">
 <frame name=mapout src="/adm/rat/map.html">
 </frameset>
 </html>
@@ -531,7 +537,7 @@ sub storemap {
         }
     }
     $output=~s/http\&colon\;\/\///g;
-    $ENV{'form.output'}=$output;
+    $env{'form.output'}=$output;
     return 
      &Apache::lonratsrv::loadmap($fn,&Apache::lonratsrv::savemap($fn,''));
 }
@@ -574,7 +580,7 @@ sub delparameter {
 }
 
 sub getparameter {
-    my ($to,$name);
+    my ($to,$name)=@_;
     my $value=undef;
     my $ptype=undef;
     foreach (split('&&&',$resparms[$to])) {
@@ -703,15 +709,19 @@ sub smpedt {
    my $buttons=&buttons(2);
    my $tmpfn=&Apache::lonnet::filelocation('',$url).'.tmp';
    my $targetmsg='';
-   if ($ENV{'form.save'}) {
-       $targetmsg='<b>Saving ...</b><br>';
+   if ($env{'form.save'}) {
        copy($tmpfn,&Apache::lonnet::filelocation('',$url));
        unlink($tmpfn);
        my ($errtext,$fatal)=
                            &mapread(&Apache::lonnet::filelocation('',$url),'');
+       unless ($fatal) {
+	   $targetmsg='<b>'.&mt('Saved.').'</b><br />';
+       } else {
+	   $targetmsg='<b>'.&mt('An error occured while saving.').'</b><br />';
+       }
    }
-   if ($ENV{'form.revert'}) {
-       $targetmsg='<b>Reverting ...</b><br>';
+   if ($env{'form.revert'}) {
+       $targetmsg='<b>'.&mt('Reverted.').'</b><br />';
        unlink($tmpfn);
        my ($errtext,$fatal)=
                            &mapread(&Apache::lonnet::filelocation('',$url),'');
@@ -727,30 +737,30 @@ sub smpedt {
    my @targetselect=();
    undef @importselect;
    undef @targetselect;
-   if (defined($ENV{'form.importsel'})) {
-       if (ref($ENV{'form.importsel'})) {
-	   @importselect=sort(@{$ENV{'form.importsel'}});
+   if (defined($env{'form.importsel'})) {
+       if (ref($env{'form.importsel'})) {
+	   @importselect=sort(@{$env{'form.importsel'}});
        } else {
-           @importselect=($ENV{'form.importsel'});
+           @importselect=($env{'form.importsel'});
        }
    }
-   if (defined($ENV{'form.target'})) {
-       if (ref($ENV{'form.target'})) {
-	   @targetselect=sort(@{$ENV{'form.target'}});
+   if (defined($env{'form.target'})) {
+       if (ref($env{'form.target'})) {
+	   @targetselect=sort(@{$env{'form.target'}});
        } else {
-           @targetselect=($ENV{'form.target'});
+           @targetselect=($env{'form.target'});
        }
    }
 # ============================================================ Process commands
 
-   my $targetdetail=$ENV{'form.targetdetail'};
-   my $importdetail=$ENV{'form.curimpdetail'};
+   my $targetdetail=$env{'form.targetdetail'};
+   my $importdetail=$env{'form.curimpdetail'};
 
 # ---------------------------------------------------- Importing from groupsort
-   if (($ENV{'form.importdetail'}) && (!$ENV{'form.impfortarget'})) {
+   if (($env{'form.importdetail'}) && (!$env{'form.impfortarget'})) {
 
        $importdetail='';
-       my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
+       my @curimport=split(/\&/,$env{'form.curimpdetail'});
 
        my $lastsel;
 
@@ -767,7 +777,7 @@ sub smpedt {
 	   }
        }
 
-      $importdetail.='&'.$ENV{'form.importdetail'};
+      $importdetail.='&'.$env{'form.importdetail'};
 
        for (my $i=$lastsel+1;$i<=$#curimport;$i++) {
            my ($name,$url)=split(/\=/,$curimport[$i]);
@@ -779,12 +789,12 @@ sub smpedt {
        $importdetail=~s/^\&//;
 
 # ------------------------------------------------------------------- Clear all
-   } elsif ($ENV{'form.clear'}) {
+   } elsif ($env{'form.clear'}) {
        $importdetail='';
 # ------------------------------------------------------------ Discard selected
-   } elsif ($ENV{'form.discard'}) {
+   } elsif ($env{'form.discard'}) {
        $importdetail='';
-       my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
+       my @curimport=split(/\&/,$env{'form.curimpdetail'});
        foreach (@importselect) {
 	   $curimport[$_]='';
        }
@@ -795,9 +805,9 @@ sub smpedt {
 	   }
        }
 # --------------------------------------------------------- Loading another map
-   } elsif ($ENV{'form.loadmap'}) {
+   } elsif ($env{'form.loadmap'}) {
        $importdetail='';
-       my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
+       my @curimport=split(/\&/,$env{'form.curimpdetail'});
 
        my $lastsel;
 
@@ -815,7 +825,7 @@ sub smpedt {
        }
 
        foreach (
-    &Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$ENV{'form.importmap'}))) {
+    &Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$env{'form.importmap'}))) {
 	   my ($name,$url)=split(/\:/,$_);
            if ($url) {
               $importdetail.='&'.&Apache::lonnet::escape($name).'='.
@@ -833,19 +843,19 @@ sub smpedt {
        $importdetail=~s/^\&//;
 
 # ------------------------------------------------ Groupimport/search to target
-   } elsif ($ENV{'form.importdetail'}) {
+   } elsif ($env{'form.importdetail'}) {
        my $lastsel;
        if (defined($targetselect[-1])) {
 	   $lastsel=$targetselect[-1];
        } else {
            $lastsel=$#order+1;
        }
-       &pastetarget($lastsel,split(/\&/,$ENV{'form.importdetail'}));
+       &pastetarget($lastsel,split(/\&/,$env{'form.importdetail'}));
        &storemap(&Apache::lonnet::filelocation('',$url));
 # ------------------------------------------------------------------------- Cut
-   } elsif (($ENV{'form.cut'}) || ($ENV{'form.copy'})) {
+   } elsif (($env{'form.cut'}) || ($env{'form.copy'})) {
        $importdetail='';
-       my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
+       my @curimport=split(/\&/,$env{'form.curimpdetail'});
 
        my $lastsel;
 
@@ -879,7 +889,7 @@ sub smpedt {
        $importdetail=~s/\&+/\&/g;
        $importdetail=~s/^\&//;
 
-       if ($ENV{'form.cut'}) {
+       if ($env{'form.cut'}) {
            my @neworder=();
            for (my $i=0;$i<=$#order;$i++) {
                my $include=1;
@@ -893,7 +903,7 @@ sub smpedt {
        }
 
 # ----------------------------------------------------------------------- Paste
-   } elsif ($ENV{'form.paste'}) {
+   } elsif ($env{'form.paste'}) {
        my $lastsel;
        if (defined($targetselect[-1])) {
 	   $lastsel=$targetselect[-1];
@@ -901,14 +911,14 @@ sub smpedt {
            $lastsel=$#order+1;
        }
        my @newsequence;
-       my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
+       my @curimport=split(/\&/,$env{'form.curimpdetail'});
        foreach (@importselect) {
           $newsequence[$#newsequence+1]=$curimport[$_];
        }
        &pastetarget($lastsel,@newsequence);
        &storemap(&Apache::lonnet::filelocation('',$url));
 # -------------------------------------------------------------------- Move up 
-   } elsif ($ENV{'form.moveup'}) {
+   } elsif ($env{'form.moveup'}) {
        foreach (sort @targetselect) {
            if ($_-1>0) {
               my $movethis=$order[$_-1];
@@ -918,7 +928,7 @@ sub smpedt {
        }
        &storemap(&Apache::lonnet::filelocation('',$url));
 # ------------------------------------------------------------------ Move down
-   } elsif ($ENV{'form.movedown'}) {
+   } elsif ($env{'form.movedown'}) {
        foreach (reverse sort @targetselect) {
            if ($_-1<$#order) {
               my $movethis=$order[$_-1];
@@ -928,10 +938,10 @@ sub smpedt {
        }
        &storemap(&Apache::lonnet::filelocation('',$url));
 # --------------------------------------------------------------------- Rename
-   } elsif ($ENV{'form.renameres'}) {
-       my $residx=$Apache::lonratedt::order[$ENV{'form.renameidx'}-1];
+   } elsif ($env{'form.renameres'}) {
+       my $residx=$Apache::lonratedt::order[$env{'form.renameidx'}-1];
        my ($name,@resrest)=split(/\:/,$Apache::lonratedt::resources[$residx]);
-       $name=$ENV{'form.renametitle'};
+       $name=$env{'form.renametitle'};
        $name=~s/\:/\&colon\;/g;
        $Apache::lonratedt::resources[$residx]=$name.':'.join(':',@resrest);
        &storemap(&Apache::lonnet::filelocation('',$url));
@@ -971,10 +981,9 @@ sub smpedt {
 
 # ----------------------------------------------------- Start simple RAT screen
    my $editscript=&editscript('simple');
-   my $bodytag=&Apache::loncommon::bodytag(undef,undef,undef,1).
-       &Apache::loncommon::help_open_topic('Sequence_Simple_Editor_Creation').
-       &Apache::loncommon::help_open_faq(6).
-       &Apache::loncommon::help_open_bug('RAT');
+   my $bodytag=&Apache::loncommon::bodytag(undef,undef,undef,
+					($env{'environment.remote'} ne 'off')).
+       &Apache::loncommon::help_open_menu('','Sequence_Simple_Editor_Creation','Sequence_Simple_Editor_Creation','',6,'RAT');
    my %lt=&Apache::lonlocal::texthash(
 				      'sa' => 'Save',
 				      'nt' => 'New Title',
@@ -1130,8 +1139,7 @@ sub viewmap {
     my ($r,$url,$adv,$errtext)=@_;
     $r->print('<html>'.
      &Apache::loncommon::bodytag('Edit Content of a Map').
-	      &Apache::loncommon::help_open_faq(6).
-	      &Apache::loncommon::help_open_bug('RAT').
+	      &Apache::loncommon::help_open_menu('','','','',6,'RAT').
 	      &buttons($adv));
     if ($errtext) {
 	$r->print($errtext.'<hr />');
@@ -1141,22 +1149,52 @@ sub viewmap {
     if ($adv) {
 	$r->print('<p><b><font color="red">'.&mt('Map contents are not shown in order.').'</font></b></p><br />');
     }
+    $r->print( '<table border="0" cellspacing="2" cellpadding="4">'.
+               '<tr bgcolor="#DDDDDD"><th>'.&mt('Type').'</th>'.
+               '<th>'.&mt('Title in map').'</th>'.
+               '<th>'.&mt('Filename of resource').'</th>'.
+               '<th>'.&mt('Link to published resource').'</th>'.
+               '<th>'.&mt('Link to resource in Construction Space').'</th>'.
+               '</tr>');
+    my @backgroundColors = ("#FFFFFF", "#F6F6F6");
     foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {
 	if (defined($_)) {
             $idx++;
-	    my ($title,$url)=split(/\:/,$_);
+	    my ($title,$url,$cond)=split(/\:/,$_);
+	    if ($cond eq 'cond') { next; }
             $title=~s/\&colon\;/\:/g;
             $url=~s/\&colon\;/\:/g;
             unless ($title) { $title=(split(/\//,$url))[-1] };
-            unless ($title) { $title='<i>Empty</i>'; }
+            unless ($title) { $title='<i>'.&mt('Empty').'</i>'; }
+            my $resurl = &Apache::lonratsrv::qtescape($url);
+            my $resfilepath = $Apache::lonnet::perlvar{'lonDocRoot'}.$resurl;
+            my $filename; 
+            if ($resurl =~ m#/([^/]+)$#) {
+                $filename = $1;
+            }
+            my $cstrurl = $resurl;
+            $cstrurl =~ s#^/res/[^/]+/([^/]+)/#/priv/$1/#;
+            my $bgcol = $idx%2; 
+            $r->print('<tr bgcolor='.$backgroundColors[$bgcol].'><td>'.
+                      '<img src="'.&Apache::loncommon::icon($resfilepath).
+                      '" /></td><td>'.&Apache::lonratsrv::qtescape($title).
+                      '</td><td>'.$filename.'</td><td>');
+            if ($url) {
+                if (-e $resfilepath) {
+		    $r->print('<a href="'.$resurl.'">'.&mt('Resource space').'</a>');
+                } else {
+                    $r->print(&mt('unpublished'));
+                }
+            }
+            $r->print('</td><td>');
             if ($url) {
-		$r->print('<a href="'.&Apache::lonratsrv::qtescape($url).'">');
+               $r->print('<a href="'.$cstrurl.'">'.
+                         &mt('Construction space').'</a>');
             }
-            $r->print(&Apache::lonratsrv::qtescape($title));
-            if ($url) { $r->print('</a>'); }
-	    $r->print('<br>');
+            $r->print('</td></tr>'."\n");
         }
     }
+    $r->print('</table>');
     $r->print('</body></html>');
 }
 
@@ -1168,7 +1206,7 @@ sub handler {
   $r->send_http_header;
 
   return OK if $r->header_only;
-  my $target = $ENV{'form.grade_target'};
+  my $target = $env{'form.grade_target'};
   if ($target eq 'meta') {
       &Apache::loncommon::content_type($r,'text/html');
       $r->send_http_header;
@@ -1187,8 +1225,8 @@ sub handler {
 # ------------------------------------------- Determine which tools can be used
   my $adv=0;
 
-  unless ($ENV{'form.forcesmp'}) {
-     if ($ENV{'form.forceadv'}) {
+  unless ($env{'form.forcesmp'}) {
+     if ($env{'form.forceadv'}) {
         $adv=1;
      } elsif (my $fh=Apache::File->new($fn)) {
 	 my $allmap=join('',<$fh>);
@@ -1206,9 +1244,9 @@ sub handler {
 
 # ----------------------------------- adv==1 now means "graphical MUST be used"
 
-  if ($ENV{'form.forceadv'}) {
+  if ($env{'form.forceadv'}) {
       &ratedt($r,$url);
-  } elsif ($ENV{'form.forcesmp'}) {
+  } elsif ($env{'form.forcesmp'}) {
       &smpedt($r,$url,$errtext);
   } else {
       &viewmap($r,$url,$adv,$errtext);