Diff for /rat/lonratedt.pm between versions 1.16 and 1.36

version 1.16, 2002/05/14 15:19:13 version 1.36, 2002/09/04 16:54:44
Line 36  use strict; Line 36  use strict;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonratsrv;  use Apache::lonratsrv;
   use Apache::lonsequence;
   use Apache::loncommon;
   use File::Copy;
   
 my @order=();  use vars qw(@order @resources);
 my @resources=();  
   
   
 # Mapread read maps into global arrays @links and @resources, determines status  # Mapread read maps into global arrays @links and @resources, determines status
Line 52  sub mapread { Line 54  sub mapread {
     undef @links;      undef @links;
     undef @resources;      undef @resources;
     undef @order;      undef @order;
       @resources=('');
       @order=();
   
     my ($outtext,$errtext)=&Apache::lonratsrv::loadmap($fn,'');      my ($outtext,$errtext)=&Apache::lonratsrv::loadmap($fn,'');
     if ($errtext) { return ($errtext,2); }      if ($errtext) { return ($errtext,2); }
Line 65  sub mapread { Line 69  sub mapread {
         if ($command eq 'objlinks') {          if ($command eq 'objlinks') {
             $links[$number]=$content;              $links[$number]=$content;
         }          }
           if ($command eq 'objparms') {
       return('Map has resource parameters. Use advanced editor.',1);
           }
     }      }
 # ------------------------------------------------------- Is this a linear map?  # ------------------------------------------------------- Is this a linear map?
     my @starters=();      my @starters=();
Line 88  sub mapread { Line 95  sub mapread {
  }   }
   
     }      }
     for (my $i=0; $i<=$#resources; $i++) {      for (my $i=1; $i<=$#resources; $i++) {
         if (defined($resources[$i])) {          if (defined($resources[$i])) {
     unless (($starters[$i]) || ($endings[$i])) {      unless (($starters[$i]) || ($endings[$i])) {
                 return                  return
Line 127  sub mapread { Line 134  sub mapread {
 }  }
   
 # ---------------------------------------------- Read a map as well as possible  # ---------------------------------------------- Read a map as well as possible
   # Also used by the sequence handler
   # Call lonsequence::attemptread to read from resource space
   #
 sub attemptread {  sub attemptread {
     my $fn=shift;      my $fn=shift;
   
Line 152  sub attemptread { Line 161  sub attemptread {
   
 # --------------------------------------------------------------- Sort, sort of  # --------------------------------------------------------------- Sort, sort of
   
     my $startidx=0;      my @objsort=();
     my $endidx=0;      undef @objsort;
     for (my $i=0; $i<=$#theseres; $i++) {  
         if (defined($theseres[$i])) {  
             my ($title,$url,$ext,$type)=split(/\:/,$theseres[$i]);  
     if ($type eq 'start') { $startidx=$i; }  
             if ($type eq 'finish') { $endidx=$i; }  
         }  
     }  
   
       my @data1=();
       my @data2=();
       undef @data1;
       undef @data2;
   
       my $k;
       my $kj;
       my $j;
       my $ij;
   
      for ($k=1;$k<=$#theseres;$k++) {
         if (defined($theseres[$k])) {
            $objsort[$#objsort+1]=$k;
         }
      }
   
     return @theseres;     for ($k=1;$k<=$#links;$k++) {
        if (defined($links[$k])) {
         @data1=split(/\:/,$links[$k]);
         $kj=-1;
         for (my $j=0;$j<=$#objsort;$j++) {
            if ((split(/\:/,$objsort[$j]))[0]==$data1[0]) {
               $kj=$j;
            }
         }
         if ($kj!=-1) { $objsort[$kj].=':'.$data1[1]; }
        }
      }
       for ($k=0;$k<=$#objsort;$k++) {
         for ($j=0;$j<=$#objsort;$j++) {
           if ($k!=$j) {
             @data1=split(/\:/,$objsort[$k]);
             @data2=split(/\:/,$objsort[$j]);
             my $dol=$#data1+1;
             my $dtl=$#data2+1;
             if ($dol+$dtl<1000) {
              for ($kj=1;$kj<$dol;$kj++) {
                if ($data1[$kj]==$data2[0]) {
                   for ($ij=1;$ij<$dtl;$ij++) {
                      $data1[$#data1+1]=$data2[$ij];
                   }
                }
              }
              for ($kj=1;$kj<$dtl;$kj++) {
                if ($data2[$kj]==$data1[0]) {
                    for ($ij=1;$ij<$dol;$ij++) {
                       $data2[$#data2+1]=$data1[$ij];
                    }
                }
              }
              $objsort[$k]=join(':',@data1);
              $objsort[$j]=join(':',@data2);
             }
            }
         } 
     }
   # ---------------------------------------------------------------- Now sort out
   
 }      @objsort=sort {
         my @data1=split(/\:/,$a);
         my @data2=split(/\:/,$b);
         my $rvalue=0;
         my $k;
         for ($k=1;$k<=$#data1;$k++) {
            if ($data1[$k]==$data2[0]) { $rvalue--; }
         }
         for ($k=1;$k<=$#data2;$k++) {
            if ($data2[$k]==$data1[0]) { $rvalue++; }
         }
         if ($rvalue==0) { $rvalue=$#data2-$#data1; }
         $rvalue;
       } @objsort;
   
       my @outres=();
       undef @outres;
   
       for ($k=0;$k<=$#objsort;$k++) {
    $outres[$k]=$theseres[(split(/\:/,$objsort[$k]))[0]];
       }
       return @outres;
   }
   
 # --------------------------------------------------------- Build up RAT screen  # --------------------------------------------------------- Build up RAT screen
 sub ratedt {  sub ratedt {
Line 205  sub buttons { Line 283  sub buttons {
     return $output.'</form><hr>';      return $output.'</form><hr>';
 }  }
   
 sub smpedt {  # ----------------------------------------------------------- Paste into target
    my ($r,$errtext)=@_;  # modifies @order, @resources
    my $buttons=&buttons(2);  
   
 # ---------------------------------------------------------- Process form input  
   
    my @importselect=();  
    my @targetselect=();  
    undef @importselect;  
    undef @targetselect;  
    if (defined($ENV{'form.import'})) {  
        if (ref($ENV{'form.import'})) {  
    @importselect=sort($ENV->{'form.import'});  
        } else {  
            @importselect=($ENV{'form.import'});  
        }  
    }  
    if (defined($ENV{'form.target'})) {  
        if (ref($ENV{'form.target'})) {  
    @targetselect=sort($ENV->{'form.target'});  
        } else {  
            @targetselect=($ENV{'form.target'});  
        }  
    }  
 # ============================================================ Process commands  
   
    my $targetdetail=$ENV{'form.targetdetail'};  
    my $importdetail=$ENV{'form.curimpdetail'};  
   
 # ---------------------------------------------------- Importing from groupsort  
    if (($ENV{'form.importdetail'}) && (!$ENV{'form.impfortarget'})) {  
   
        $importdetail='';  
        my @curimport=split(/\&/,$ENV{'form.curimpdetail'});  
   
        my $lastsel;  
   
        if (defined($importselect[-1])) {  
    $lastsel=$importselect[-1];  
        } else {  
            $lastsel=$#curimport;  
        }  
   
        for (my $i=0;$i<=$lastsel;$i++) {  sub pastetarget {
            my ($name,$url)=split(/\=/,$curimport[$i]);      my ($after,@which)=@_;
            if ($url) {      my @insertorder=();
               $importdetail.='&'.&Apache::lonnet::escape($name).'='.      foreach (@which) {
          &Apache::lonnet::escape($url);          if (defined($_)) {
       my ($name,$url)=split(/\=/,$_);
               $name=&Apache::lonnet::unescape($name);
               $url=&Apache::lonnet::unescape($url);
               if ($url) {
          my $idx=$#resources+1;
                  $insertorder[$#insertorder+1]=$idx;
                  my $ext='false';
                  if ($url=~/^http\:\/\//) { $ext='true'; }
                  $url=~s/\:/\&colon;/g;
                  $resources[$idx]=$name.':'.$url.':'.$ext.':normal:res';
    }     }
        }          }
       }
       $importdetail.='&'.$ENV{'form.importdetail'};      my @oldorder=splice(@order,$after);
       @order=(@order,@insertorder,@oldorder);
   }
   
        for (my $i=$lastsel+1;$i<=$#curimport;$i++) {  # ------------------------------------------------ Get start and finish correct
            my ($name,$url)=split(/\=/,$curimport[$i]);  # modifies @resources
            if ($url) {  
               $importdetail.='&'.&Apache::lonnet::escape($name).'='.  
          &Apache::lonnet::escape($url);  
   }  
        }  
        $importdetail=~s/\&+/\&/g;  
        $importdetail=~s/^\&//;  
   
 # ------------------------------------------------------------------- Clear all  sub startfinish {
    } elsif ($ENV{'form.clear'}) {      foreach (@order) {
        $importdetail='';   my ($name,$url,$ext)=split(/\:/,$resources[$_]);
 # ------------------------------------------------------------ Discard selected          if ($url=~/http\&colon\:\/\//) { $ext='true'; }
    } elsif ($ENV{'form.discard'}) {          $resources[$_]=$name.':'.$url.':'.$ext.':normal:res';
        $importdetail='';      }
        my @curimport=split(/\&/,$ENV{'form.curimpdetail'});     my ($name,$url,$ext)=split(/\:/,$resources[$order[0]]);
        foreach (@importselect) {     $resources[$order[0]]=$name.':'.$url.':'.$ext.':start:res';
    $curimport[$_]='';     if ($#order==0) {
        }         $resources[$#resources+1]='::false';
        for (my $i=0;$i<=$#curimport;$i++) {         $order[1]=$#resources;
            my ($name,$url)=split(/\=/,$curimport[$i]);  
            if ($url) {  
               $importdetail.='&'.&Apache::lonnet::escape($name).'='.  
          &Apache::lonnet::escape($url);  
    }  
        }  
 # ---------------------------  
    }     }
      my ($name,$url,$ext)=split(/\:/,$resources[$order[$#order]]);
      $resources[$order[$#order]]=$name.':'.$url.':'.$ext.':finish:res';
   }
   
 # ------------------------------------------------------------ Assemble windows  # ------------------------------------------------------------------- Store map
   
    my $idx=-1;  
    my $importwindow=join("\n",map {  
        $idx++;  
        if ($_) {   
           my ($name,$url)=split(/\=/,$_);  
           unless ($name) { $name=(split(/\//,$url))[-1]; }  
           unless ($name) { $name='EMPTY'; }  
           '<option value="'.$idx.'">'.&Apache::lonnet::unescape($name).  
                                     '</option>';  
       }  
    } split(/\&/,$importdetail));  
   
    $idx=0;  sub storemap {
    my $targetwindow=join("\n",map {       my $realfn=shift;
        my ($name,$url)=split(/\:/,$resources[$_]);      my $fn=$realfn;
        unless ($name) {  $name=(split(/\//,$url))[-1]; }  # unless this is forced to work from the original file, use a temporary file
        unless ($name) { $name='EMPTY'; }  # instead
        $targetdetail.='&'.&Apache::lonnet::escape($name).'='.      unless (shift) {
                   &Apache::lonnet::escape($url);         $fn=$realfn.'.tmp';
        $idx++;         unless (-e $fn) {
        '<option value="'.$idx.'_'.$_.'">'.$name.'</option>';    copy($realfn,$fn);
    } @order);         }
       }
   # store data either into tmp or real file
       &startfinish();
       my $output='graphdef<:>no';
       my $k=1;
       for (my $i=0; $i<=$#order; $i++) {
           if (defined($resources[$order[$i]])) {
       $output.='<&>objcont<:>'.$order[$i].'<:>'.$resources[$order[$i]];
           }
           if (defined($order[$i+1])) {
       if (defined($resources[$order[$i+1]])) {
                  $output.='<&>objlinks<:>'.$k.'<:>'.
      $order[$i].':'.$order[$i+1].':0';
          $k++;
               }
           }
       }
       $output=~s/http\&colon\;\/\///g;
       $ENV{'form.output'}=$output;
       return 
        &Apache::lonratsrv::loadmap($fn,&Apache::lonratsrv::savemap($fn,''));
   }
   
 # ----------------------------------------------------- Start simple RAT screen  sub editscript {
    $r->print(<<ENDSMPHEAD);      my $mode=shift;
 <html>      return(<<ENDSCRIPT);
 <head>  
 <script>  
 var srch;  var srch;
 var srchflag=-1; // 1 means currently open  var srchflag=-1; // 1 means currently open
                  // 0 means closed (but has been open)                   // 0 means closed (but has been open)
Line 361  function idxopen(mode) { Line 408  function idxopen(mode) {
    var options="scrollbars=1,resizable=1,menubar=0";     var options="scrollbars=1,resizable=1,menubar=0";
    idxmode=mode;     idxmode=mode;
    idxflag=1;     idxflag=1;
    idx=open("/res/?launch=1&mode=simple&catalogmode="+mode,"idxout",options);     idx=open("/res/?launch=1&mode=$mode&catalogmode="+mode,"idxout",options);
    idx.focus();     idx.focus();
 }  }
   
Line 370  function srchopen(mode) { Line 417  function srchopen(mode) {
    var options="scrollbars=1,resizable=1,menubar=0";     var options="scrollbars=1,resizable=1,menubar=0";
    srchmode=mode;     srchmode=mode;
    srchflag=1;     srchflag=1;
    srch=open("/adm/searchcat?launch=1&mode=simple&catalogmode="+mode,"srchout",options);     srch=open("/adm/searchcat?launch=1&mode=$mode&catalogmode="+mode,"srchout",options);
    srch.focus();     srch.focus();
 }  }
 // ----------------------------------------------------- launch indexer browser  // ----------------------------------------------------- launch indexer browser
Line 420  function idxcheck(mode) { Line 467  function idxcheck(mode) {
         editbrowser = open(url,title,options,'1');          editbrowser = open(url,title,options,'1');
         editbrowser.focus();          editbrowser.focus();
     }      }
   ENDSCRIPT
   }
   # ------------------------------------------------------- Simple edit processor
   
   sub smpedt {
      my ($r,$url,$errtext)=@_;
      my $buttons=&buttons(2);
      my $tmpfn=&Apache::lonnet::filelocation('',$url).'.tmp';
      my $targetmsg='';
      if ($ENV{'form.save'}) {
          $targetmsg='<b>Saving ...</b><br>';
          copy($tmpfn,&Apache::lonnet::filelocation('',$url));
          unlink($tmpfn);
          my ($errtext,$fatal)=
                              &mapread(&Apache::lonnet::filelocation('',$url),'');
      }
      if ($ENV{'form.revert'}) {
          $targetmsg='<b>Reverting ...</b><br>';
          unlink($tmpfn);
          my ($errtext,$fatal)=
                              &mapread(&Apache::lonnet::filelocation('',$url),'');
      }
      if (-e $tmpfn) {
         $targetmsg=
           '<b><font color="red">You are working with an unsaved version of your map.</font></b><br>';
         my ($errtext,$fatal)=&mapread($tmpfn,'');
      }
   # ---------------------------------------------------------- Process form input
   
      my @importselect=();
      my @targetselect=();
      undef @importselect;
      undef @targetselect;
      if (defined($ENV{'form.importsel'})) {
          if (ref($ENV{'form.importsel'})) {
      @importselect=sort(@{$ENV{'form.importsel'}});
          } else {
              @importselect=($ENV{'form.importsel'});
          }
      }
      if (defined($ENV{'form.target'})) {
          if (ref($ENV{'form.target'})) {
      @targetselect=sort(@{$ENV{'form.target'}});
          } else {
              @targetselect=($ENV{'form.target'});
          }
      }
   # ============================================================ Process commands
   
      my $targetdetail=$ENV{'form.targetdetail'};
      my $importdetail=$ENV{'form.curimpdetail'};
   
   # ---------------------------------------------------- Importing from groupsort
      if (($ENV{'form.importdetail'}) && (!$ENV{'form.impfortarget'})) {
   
          $importdetail='';
          my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
   
          my $lastsel;
   
          if (defined($importselect[-1])) {
      $lastsel=$importselect[-1];
          } else {
              $lastsel=$#curimport;
          }
   
          for (my $i=0;$i<=$lastsel;$i++) {
              my ($name,$url)=split(/\=/,$curimport[$i]);
              if ($url) {
                 $importdetail.='&'.$name.'='.$url;
      }
          }
   
         $importdetail.='&'.$ENV{'form.importdetail'};
   
          for (my $i=$lastsel+1;$i<=$#curimport;$i++) {
              my ($name,$url)=split(/\=/,$curimport[$i]);
              if ($url) {
                 $importdetail.='&'.$name.'='.$url;
     }
          }
          $importdetail=~s/\&+/\&/g;
          $importdetail=~s/^\&//;
   
   # ------------------------------------------------------------------- Clear all
      } elsif ($ENV{'form.clear'}) {
          $importdetail='';
   # ------------------------------------------------------------ Discard selected
      } elsif ($ENV{'form.discard'}) {
          $importdetail='';
          my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
          foreach (@importselect) {
      $curimport[$_]='';
          }
          for (my $i=0;$i<=$#curimport;$i++) {
              my ($name,$url)=split(/\=/,$curimport[$i]);
              if ($url) {
                 $importdetail.='&'.$name.'='.$url;
      }
          }
   # --------------------------------------------------------- Loading another map
      } elsif ($ENV{'form.loadmap'}) {
          $importdetail='';
          my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
   
          my $lastsel;
   
          if (defined($importselect[-1])) {
      $lastsel=$importselect[-1];
          } else {
              $lastsel=$#curimport;
          }
   
          for (my $i=0;$i<=$lastsel;$i++) {
              my ($name,$url)=split(/\=/,$curimport[$i]);
              if ($url) {
                 $importdetail.='&'.$name.'='.$url;
      }
          }
   
          foreach (
       &Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$ENV{'form.importmap'}))) {
      my ($name,$url)=split(/\:/,$_);
              if ($url) {
                 $importdetail.='&'.&Apache::lonnet::escape($name).'='.
            &Apache::lonnet::escape($url);
     }
          }
   
          for (my $i=$lastsel+1;$i<=$#curimport;$i++) {
              my ($name,$url)=split(/\=/,$curimport[$i]);
              if ($url) {
                 $importdetail.='&'.$name.'='.$url;
     }
          }
          $importdetail=~s/\&+/\&/g;
          $importdetail=~s/^\&//;
   
   # ------------------------------------------------ Groupimport/search to target
      } elsif ($ENV{'form.importdetail'}) {
          my $lastsel;
          if (defined($targetselect[-1])) {
      $lastsel=$targetselect[-1];
          } else {
              $lastsel=$#order+1;
          }
          &pastetarget($lastsel,split(/\&/,$ENV{'form.importdetail'}));
          &storemap(&Apache::lonnet::filelocation('',$url));
   # ------------------------------------------------------------------------- Cut
      } elsif (($ENV{'form.cut'}) || ($ENV{'form.copy'})) {
          $importdetail='';
          my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
   
          my $lastsel;
   
          if (defined($importselect[-1])) {
      $lastsel=$importselect[-1];
          } else {
              $lastsel=$#curimport;
          }
   
          for (my $i=0;$i<=$lastsel;$i++) {
              my ($name,$url)=split(/\=/,$curimport[$i]);
              if ($url) {
                 $importdetail.='&'.$name.'='.$url;
      }
          }
   
          foreach (@targetselect) {
      my ($name,$url)=split(/\:/,$resources[$order[$_-1]]);
              if ($url) {
                 $importdetail.='&'.&Apache::lonnet::escape($name).'='.
            &Apache::lonnet::escape($url);
     }
          }
   
          for (my $i=$lastsel+1;$i<=$#curimport;$i++) {
              my ($name,$url)=split(/\=/,$curimport[$i]);
              if ($url) {
                 $importdetail.='&'.$name.'='.$url;
     }
          }
          $importdetail=~s/\&+/\&/g;
          $importdetail=~s/^\&//;
   
          if ($ENV{'form.cut'}) {
              my @neworder=();
              for (my $i=0;$i<=$#order;$i++) {
                  my $include=1;
                  foreach (@targetselect) {
      if ($_-1==$i) { $include=0; }
                  }
                  if ($include) { $neworder[$#neworder+1]=$order[$i]; }
              }
              @order=@neworder;
              &storemap(&Apache::lonnet::filelocation('',$url));      
          }
   
   # ----------------------------------------------------------------------- Paste
      } elsif ($ENV{'form.paste'}) {
          my $lastsel;
          if (defined($targetselect[-1])) {
      $lastsel=$targetselect[-1];
          } else {
              $lastsel=$#order+1;
          }
          my @newsequence;
          my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
          foreach (@importselect) {
             $newsequence[$#newsequence+1]=$curimport[$_];
          }
          &pastetarget($lastsel,@newsequence);
          &storemap(&Apache::lonnet::filelocation('',$url));
   # ------------------------------------------------ 
      }
   # ------------------------------------------------------------ Assemble windows
      
      my $idx=-1;
      $importdetail='&'.$importdetail;
      $importdetail=~s/^\&+/\&/;
      my $importwindow=
          '<option value="-1"> ---- Import and Paste Area ---- </option>'.
        join("\n",map {
          $idx++;
          if ($_) { 
             my ($name,$url)=split(/\=/,$_);
             unless ($name) { $name=(split(/\//,$url))[-1]; }
             unless ($name) { $name='EMPTY'; }
             '<option value="'.$idx.'">'.&Apache::lonnet::unescape($name).
                                       '</option>';
         }
      } split(/\&/,$importdetail));
   
      $idx=0;
      my $targetwindow=       
          '<option value="0"> ------- Target Edit Map ------- </option>'.
        join("\n",map { 
          my ($name,$url)=split(/\:/,$resources[$_]);
          unless ($name) {  $name=(split(/\//,$url))[-1]; }
          unless ($name) { $name='EMPTY'; }
          $targetdetail.='&'.&Apache::lonnet::escape($name).'='.
                     &Apache::lonnet::escape($url);
          $idx++;
          '<option value="'.$idx.'">'.$name.'</option>';
      } @order);
   
   # ----------------------------------------------------- Start simple RAT screen
      my $editscript=&editscript('simple');
      my $bodytag=&Apache::loncommon::bodytag(undef,undef,undef,1);
      $r->print(<<ENDSMPHEAD);
   <html>
   <head>
   <script>
   
      $editscript
   
      function openview(entry) {
          var url=unescape((entry.split('='))[1]);
          var parts=new Array;
          parts=url.split('&colon;');
          url=parts.join(':');
          if (url) { open(url,'cat'); }
      }
   
      function viewtarget() {
          openview((document.forms.simpleedit.targetdetail.value.split('&'))
                   [document.forms.simpleedit.target.selectedIndex]);
      }
   
      function viewimport() {
          openview((document.forms.simpleedit.curimpdetail.value.split('&'))
                   [document.forms.simpleedit.importsel.selectedIndex]);
      }
   
 </script>  </script>
 </head>                   </head>                 
 <body bgcolor='#FFFFFF'>  $bodytag
 $buttons  $buttons
 <font color=red>$errtext</font>  <font color=red>$errtext</font>
   <h1>$url</h1>
 <form name=simpleedit method=post>  <form name=simpleedit method=post>
 <input type=hidden name=forcesmp value=1>  <input type=hidden name=forcesmp value=1>
 <table>  <table>
Line 432  $buttons Line 754  $buttons
 <th>&nbsp;</th>  <th>&nbsp;</th>
 <th width="40%">Target</th></tr>  <th width="40%">Target</th></tr>
 <tr><td bgcolor="#FFFFCC">  <tr><td bgcolor="#FFFFCC">
 <input type=button onClick="javascript:groupsearch()" value="Group Search">  <input type=button onClick="javascript:groupsearch()" value="Search">
 <input type=button onClick="javascript:groupimport();" value="Group Import">  <input type=button onClick="javascript:groupimport();" value="Import">
 after selected  after selected
 <hr>  <hr>
 <input type=text size=20 name=importmap>  <input type=text size=20 name=importmap>
Line 451  value="Browse"><input type=submit name=l Line 773  value="Browse"><input type=submit name=l
 <input type=button onClick=  <input type=button onClick=
 "javascript:impfortarget.value=1;groupimport();" value="Group Import">  "javascript:impfortarget.value=1;groupimport();" value="Group Import">
 after selected  after selected
 <hr><input type=button onClick="javascript:viewtarget()" value="View">  <hr>$targetmsg
   <input type=submit name="revert" value="Revert to Last Saved">
   <input type=submit name="save" value="Save">
   <input type=button onClick="javascript:viewtarget()" value="View">
 </td></tr>  </td></tr>
   
 <tr><td bgcolor="#FFFFCC"><select name="import" multiple>  <tr><td bgcolor="#FFFFCC"><select name="importsel" size=10 multiple>
 $importwindow  $importwindow
 </select>  </select>
 </td>  </td>
Line 462  $importwindow Line 787  $importwindow
 Cut selected<br>  Cut selected<br>
 <input type=submit name=cut value='<<<'><p>  <input type=submit name=cut value='<<<'><p>
 <hr>  <hr>
   Copy selected<br>
   <input type=submit name=copy value='<--'><p>
   <hr>
 Paste after selected<br>  Paste after selected<br>
 <input type=submit name=paste value='>>>'>  <input type=submit name=paste value='-->'>
 </td>  </td>
 <td bgcolor="#FFFFCC"><select name="target" multiple>  <td bgcolor="#FFFFCC"><select name="target" size=10 multiple>
 $targetwindow  $targetwindow
 </select>  </select>
 </table>  </table>
Line 494  ENDNODIR Line 822  ENDNODIR
 # ---------------------------------------------------------------- View Handler  # ---------------------------------------------------------------- View Handler
   
 sub viewmap {  sub viewmap {
     my ($r,$adv,$errtext)=@_;      my ($r,$url,$adv,$errtext)=@_;
     $r->print('<html><body bgcolor="#FFFFFF">'.&buttons($adv));      $r->print('<html>'.
        &Apache::loncommon::bodytag('Edit Content of a Map').
        &buttons($adv));
     if ($errtext) {      if ($errtext) {
  $r->print($errtext.'<hr>');   $r->print($errtext.'<hr>');
     }      }
     foreach (@resources) {      my $idx=0;
       $r->print('<h1>'.$url.'</h1>');
       foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {
  if (defined($_)) {   if (defined($_)) {
               $idx++;
     my ($title,$url)=split(/\:/,$_);      my ($title,$url)=split(/\:/,$_);
             $title=~s/\&colon\;/\:/g;              $title=~s/\&colon\;/\:/g;
             $url=~s/\&colon\;/\:/g;              $url=~s/\&colon\;/\:/g;
Line 511  sub viewmap { Line 844  sub viewmap {
             }              }
             $r->print(&Apache::lonratsrv::qtescape($title));              $r->print(&Apache::lonratsrv::qtescape($title));
             if ($url) { $r->print('</a>'); }              if ($url) { $r->print('</a>'); }
             $r->print('<br>');      $r->print('<br>');
         }          }
     }      }
     $r->print('</body></html>');      $r->print('</body></html>');
Line 560  sub handler { Line 893  sub handler {
   if ($ENV{'form.forceadv'}) {    if ($ENV{'form.forceadv'}) {
       &ratedt($r,$url);        &ratedt($r,$url);
   } elsif ($ENV{'form.forcesmp'}) {    } elsif ($ENV{'form.forcesmp'}) {
       &smpedt($r,$errtext);        &smpedt($r,$url,$errtext);
   } else {    } else {
       &viewmap($r,$adv,$errtext);        &viewmap($r,$url,$adv,$errtext);
   }    }
   return OK;    return OK;
 }  }

Removed from v.1.16  
changed lines
  Added in v.1.36


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>