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

version 1.15, 2002/05/13 21:26:05 version 1.21, 2002/05/18 18:24:34
Line 126  sub mapread { Line 126  sub mapread {
     return $errtext;      return $errtext;
 }  }
   
   # ---------------------------------------------- Read a map as well as possible
   
   sub attemptread {
       my $fn=shift;
   
       my @links;
       undef @links;
       my @theseres;
       undef @theseres;
   
       my ($outtext,$errtext)=&Apache::lonratsrv::loadmap($fn,'');
       if ($errtext) { return @theseres }
   
   # -------------------------------------------------------------------- Read map
       foreach (split(/\<\&\>/,$outtext)) {
    my ($command,$number,$content)=split(/\<\:\>/,$_);
           if ($command eq 'objcont') {
       $theseres[$number]=$content;
           }
           if ($command eq 'objlinks') {
               $links[$number]=$content;
           }
       }
   
   # --------------------------------------------------------------- Sort, sort of
   
       my @objsort=();
       undef @objsort;
   
       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;
         }
      }
   
      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 {
   my ($r,$url)=@_;    my ($r,$url)=@_;
Line 163  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 193  sub smpedt { Line 345  sub smpedt {
    my $importdetail=$ENV{'form.curimpdetail'};     my $importdetail=$ENV{'form.curimpdetail'};
   
 # ---------------------------------------------------- Importing from groupsort  # ---------------------------------------------------- Importing from groupsort
    if ($ENV{'form.importdetail'}) {     if (($ENV{'form.importdetail'}) && (!$ENV{'form.impfortarget'})) {
   
        $importdetail='';         $importdetail='';
        my @curimport=split(/\&/,$ENV{'form.curimpdetail'});         my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
Line 209  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 219  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 239  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 268  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 378  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 401  value="Browse"><input type=submit name=l Line 621  value="Browse"><input type=submit name=l
 <input type=submit name="discard" value="Discard Selected">  <input type=submit name="discard" value="Discard Selected">
 <input type=submit name="clear" value="Clear All">  <input type=submit name="clear" value="Clear All">
 <input type=button onClick="javascript:viewimport()" value="View">  <input type=button onClick="javascript:viewimport()" value="View">
   
     </td><td>&nbsp;</td><td bgcolor="#FFFFCC">      </td><td>&nbsp;</td><td bgcolor="#FFFFCC">
 <input type=button onClick="javascript:viewtarget()" value="View">  
   <input type=button onClick=
   "javascript:impfortarget.value=1;groupsearch()" value="Group Search">
   <input type=button onClick=
   "javascript:impfortarget.value=1;groupimport();" value="Group Import">
   after selected
   <hr><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="import" multiple>
 $importwindow  $importwindow
 </select>  </select>
Line 422  $targetwindow Line 650  $targetwindow
 <input type=hidden name=importdetail value="">  <input type=hidden name=importdetail value="">
 <input type=hidden name=curimpdetail value="$importdetail">  <input type=hidden name=curimpdetail value="$importdetail">
 <input type=hidden name=targetdetail value="$targetdetail">  <input type=hidden name=targetdetail value="$targetdetail">
   <input type=hidden name=impfortarget value="0">
 </form>  </form>
 </body></html>  </body></html>
 ENDSMPHEAD  ENDSMPHEAD
Line 443  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 511  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.15  
changed lines
  Added in v.1.21


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