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

version 1.16, 2002/05/14 15:19:13 version 1.21, 2002/05/18 18:24:34
Line 152  sub attemptread { Line 152  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 274  sub buttons {
     return $output.'</form><hr>';      return $output.'</form><hr>';
 }  }
   
   # ----------------------------------------------------------- Paste into target
   # modifies @order, @resources
   
   sub pastetarget {
       my ($after,@which)=@_;
       my @insertorder=();
       foreach (@which) {
           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';
      }
           }
       }
       my @oldorder=splice(@order,$after,$#insertorder+1,@insertorder);
       @order=(@order,@oldorder);
   }
   
   # ------------------------------------------------ Get start and finish correct
   # modifies @resources
   
   sub startfinish {
       foreach (@order) {
    my ($name,$url,$ext)=split(/\:/,$resources[$_]);
           $resources[$_]=$name.':'.$url.':'.$ext.':normal:res';
       }
      my ($name,$url,$ext)=split(/\:/,$resources[0]);
      $resources[0]=$name.':'.$url.':'.$ext.':start:res';
      my ($name,$url,$ext)=split(/\:/,$resources[$order[$#order]]);
      $resources[$order[$#order]]=$name.':'.$url.':'.$ext.':finish:res';
   }
   
   # ------------------------------------------------------- Simple edit processor
   
 sub smpedt {  sub smpedt {
    my ($r,$errtext)=@_;     my ($r,$errtext)=@_;
    my $buttons=&buttons(2);     my $buttons=&buttons(2);
Line 251  sub smpedt { Line 361  sub smpedt {
        for (my $i=0;$i<=$lastsel;$i++) {         for (my $i=0;$i<=$lastsel;$i++) {
            my ($name,$url)=split(/\=/,$curimport[$i]);             my ($name,$url)=split(/\=/,$curimport[$i]);
            if ($url) {             if ($url) {
               $importdetail.='&'.&Apache::lonnet::escape($name).'='.                $importdetail.='&'.$name.'='.$url;
          &Apache::lonnet::escape($url);  
    }     }
        }         }
   
Line 261  sub smpedt { Line 370  sub smpedt {
        for (my $i=$lastsel+1;$i<=$#curimport;$i++) {         for (my $i=$lastsel+1;$i<=$#curimport;$i++) {
            my ($name,$url)=split(/\=/,$curimport[$i]);             my ($name,$url)=split(/\=/,$curimport[$i]);
            if ($url) {             if ($url) {
               $importdetail.='&'.&Apache::lonnet::escape($name).'='.                $importdetail.='&'.$name.'='.$url;
          &Apache::lonnet::escape($url);  
   }    }
        }         }
        $importdetail=~s/\&+/\&/g;         $importdetail=~s/\&+/\&/g;
Line 281  sub smpedt { Line 389  sub smpedt {
        for (my $i=0;$i<=$#curimport;$i++) {         for (my $i=0;$i<=$#curimport;$i++) {
            my ($name,$url)=split(/\=/,$curimport[$i]);             my ($name,$url)=split(/\=/,$curimport[$i]);
            if ($url) {             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 (
       &attemptread(&Apache::lonnet::filelocation('',$ENV{'form.importmap'}))) {
      my ($name,$url)=split(/\:/,$_);
              if ($url) {
               $importdetail.='&'.&Apache::lonnet::escape($name).'='.                $importdetail.='&'.&Apache::lonnet::escape($name).'='.
          &Apache::lonnet::escape($url);           &Apache::lonnet::escape($url);
    }    }
        }         }
 # ---------------------------  
    }  
   
 # ------------------------------------------------------------ Assemble windows         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;
          }
          &pastetarget($lastsel,split(/\&/,$ENV{'form.importdetail'}));
          &startfinish();
   # ------------------------------------------------------------------------- Cut
      } elsif ($ENV{'form.cut'}) {
   # ----------------------------------------------------------------------- Paste
      } elsif ($ENV{'form.paste'}) {
   # ------------------------------------------------ 
      }
   # ------------------------------------------------------------ Assemble windows
      
    my $idx=-1;     my $idx=-1;
    my $importwindow=join("\n",map {     my $importwindow=join("\n",map {
        $idx++;         $idx++;
Line 310  sub smpedt { Line 469  sub smpedt {
        $targetdetail.='&'.&Apache::lonnet::escape($name).'='.         $targetdetail.='&'.&Apache::lonnet::escape($name).'='.
                   &Apache::lonnet::escape($url);                    &Apache::lonnet::escape($url);
        $idx++;         $idx++;
        '<option value="'.$idx.'_'.$_.'">'.$name.'</option>';         '<option value="'.$idx.'">'.$name.'</option>';
    } @order);     } @order);
   
 # ----------------------------------------------------- Start simple RAT screen  # ----------------------------------------------------- Start simple RAT screen
Line 420  function idxcheck(mode) { Line 579  function idxcheck(mode) {
         editbrowser = open(url,title,options,'1');          editbrowser = open(url,title,options,'1');
         editbrowser.focus();          editbrowser.focus();
     }      }
   
      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+1]);
      }
   
      function viewimport() {
          openview((document.forms.simpleedit.curimpdetail.value.split('&'))
                   [document.forms.simpleedit.import.selectedIndex+1]);
      }
   
 </script>  </script>
 </head>                   </head>                 
 <body bgcolor='#FFFFFF'>  <body bgcolor='#FFFFFF'>
Line 494  ENDNODIR Line 672  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><body bgcolor="#FFFFFF">'.&buttons($adv));
     if ($errtext) {      if ($errtext) {
  $r->print($errtext.'<hr>');   $r->print($errtext.'<hr>');
     }      }
     foreach (@resources) {      foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {
  if (defined($_)) {   if (defined($_)) {
     my ($title,$url)=split(/\:/,$_);      my ($title,$url)=split(/\:/,$_);
             $title=~s/\&colon\;/\:/g;              $title=~s/\&colon\;/\:/g;
Line 562  sub handler { Line 740  sub handler {
   } elsif ($ENV{'form.forcesmp'}) {    } elsif ($ENV{'form.forcesmp'}) {
       &smpedt($r,$errtext);        &smpedt($r,$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.21


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