Diff for /rat/lonratedt.pm between versions 1.76 and 1.85

version 1.76, 2006/04/13 19:00:57 version 1.85, 2006/11/02 21:27:58
Line 167  determined.> Line 167  determined.>
 use strict;  use strict;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonratsrv;  use Apache::lonsequence();
 use Apache::lonsequence;  use Apache::loncommon();
 use Apache::loncommon;  
 use Apache::lonlocal;  use Apache::lonlocal;
   use LONCAPA::map();
 use File::Copy;  use File::Copy;
   use LONCAPA;
   
 use vars qw(@order @resources @resparms @zombies);  
   
   
 # Mapread read maps into global arrays @links and @resources, determines status  
 # sets @order - pointer to resources in right order  
 # sets @resources - array with the resources with correct idx  
 #  
 sub mapread {  
     my $fn=shift;  
   
     my @links;  
     undef @links;  
     undef @resources;  
     undef @order;  
     undef @resparms;  
     undef @zombies;  
   
     @resources=('');  
     @order=();  
     @resparms=();  
     @zombies=();  
   
     my ($outtext,$errtext)=&Apache::lonratsrv::loadmap($fn,'');  
     if ($errtext) { return ($errtext,2); }  
   
 # -------------------------------------------------------------------- Read map  
     foreach (split(/\<\&\>/,$outtext)) {  
  my ($command,$number,$content)=split(/\<\:\>/,$_);  
         if ($command eq 'objcont') {  
     my ($title,$src,$ext,$type)=split(/\:/,$content);  
     if ($ext eq 'cond') { next; }  
     if ($type ne 'zombie') {  
  $resources[$number]=$content;  
     } else {  
  $zombies[$number]=$content;  
     }  
         }  
         if ($command eq 'objlinks') {  
             $links[$number]=$content;  
         }  
         if ($command eq 'objparms') {  
     if ($resparms[$number]) {  
  $resparms[$number].='&&&'.$content;  
     } else {  
  $resparms[$number]=$content;  
     }  
         }  
     }  
 # ------------------------------------------------------- Is this a linear map?  
     my @starters=();  
     my @endings=();  
     undef @starters;  
     undef @endings;  
   
     foreach (@links) {  
         if (defined($_)) {  
     my ($start,$end,$cond)=split(/\:/,$_);  
             if ((defined($starters[$start])) || (defined($endings[$end]))) {   
  return  
                  (&mt('Map has branchings. Use advanced editor.'),1);  
             }  
     $starters[$start]=1;  
     $endings[$end]=1;  
     if ($cond) {  
  return  
                  (&mt('Map has conditions. Use advanced editor.'),1);  
             }  
  }  
   
     }  
     for (my $i=1; $i<=$#resources; $i++) {  
         if (defined($resources[$i])) {  
     unless (($starters[$i]) || ($endings[$i])) {  
                 return  
  (&mt('Map has unconnected resources. Use advanced editor.'),1);  
             }  
         }  
     }  
 # ---------------------------------------------- Did we just read an empty map?  
     if ($#resources<1) {  
         undef $resources[0];  
  $resources[1]=':::start';  
         $resources[2]=':::finish';  
     }  
 # -------------------------------------------------- This is a linear map, sort  
   
     my $startidx=0;  
     my $endidx=0;  
     for (my $i=0; $i<=$#resources; $i++) {  
         if (defined($resources[$i])) {  
             my ($title,$url,$ext,$type)=split(/\:/,$resources[$i]);  
     if ($type eq 'start') { $startidx=$i; }  
             if ($type eq 'finish') { $endidx=$i; }  
         }  
     }  
     my $k=0;  
     my $currentidx=$startidx;  
     $order[$k]=$currentidx;  
     for (my $i=0; $i<=$#resources; $i++) {  
         foreach (@links) {  
     my ($start,$end)=split(/\:/,$_);  
             if ($start==$currentidx) {  
  $currentidx=$end;  
                 $k++;  
                 $order[$k]=$currentidx;  
                 last;  
             }  
         }  
         if ($currentidx==$endidx) { last; }  
     }  
     return $errtext;  
 }  
   
 # ---------------------------------------------- Read a map as well as possible  
 # Also used by the sequence handler  
 # Call lonsequence::attemptread to read from resource space  
 #  
 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') {  
     my ($title,$src,$ext,$type)=split(/\:/,$content);  
     unless ($type eq 'zombie') {  
  $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 {
Line 452  sub buttons { Line 225  sub buttons {
     return $output.'</form><hr>';      return $output.'</form><hr>';
 }  }
   
 # ------------------------------------- Revive zombie idx or get unused number  
   
 sub getresidx {  
     my $url=shift;  
     my $max=1+($#resources>$#zombies?$#resources:$#zombies);  
     unless ($url) { return $max; }  
     for (my $i=0; $i<=$#zombies; $i++) {  
  my ($title,$src,$ext,$type)=split(/\:/,$zombies[$i]);  
  if ($src eq $url) {  
     undef $zombies[$i];  
     return $i;  
  }  
     }  
     return $max;  
 }  
   
 # --------------------------------------------------------------- Make a zombie  
   
 sub makezombie {  
     my $idx=shift;  
     my ($name,$url,$ext)=split(/\:/,$resources[$idx]);  
     my $now=time;  
     $zombies[$idx]=$name.  
  ' [('.$now.','.$env{'user.name'}.','.$env{'user.domain'}.')]:'.  
  $url.':'.$ext.':zombie';  
 }  
   
 # ----------------------------------------------------------- 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=&getresidx($url);  
                $insertorder[$#insertorder+1]=$idx;  
                my $ext='false';  
                if ($url=~/^http\:\/\//) { $ext='true'; }  
                $url=~s/\:/\&colon;/g;  
                $name=~s/\:/\&colon;/g;  
                $resources[$idx]=$name.':'.$url.':'.$ext.':normal:res';  
    }  
         }  
     }  
     my @oldorder=splice(@order,$after);  
     @order=(@order,@insertorder,@oldorder);  
 }  
   
 # ------------------------------------------------ Get start and finish correct  
 # modifies @resources  
   
 sub startfinish {  
 # Remove all start and finish  
     foreach (@order) {  
  my ($name,$url,$ext)=split(/\:/,$resources[$_]);  
         if ($url=~/http\&colon\:\/\//) { $ext='true'; }  
         $resources[$_]=$name.':'.$url.':'.$ext.':normal:res';  
     }  
 # Garbage collection  
     my $stillchange=1;  
      while (($#order>1) && ($stillchange)) {  
        $stillchange=0;  
        for (my $i=0;$i<=$#order;$i++) {  
    my ($name,$url,$ext)=split(/\:/,$resources[$order[$i]]);  
           unless ($url) {  
 # Take out empty resource  
               for (my $j=$i+1;$j<=$#order;$j++) {  
                   $order[$j-1]=$order[$j];  
       }  
               $#order--;  
       $stillchange=1;  
               last;  
           }  
        }  
     }  
 # Put in a start resource  
    my ($name,$url,$ext)=split(/\:/,$resources[$order[0]]);  
    $resources[$order[0]]=$name.':'.$url.':'.$ext.':start:res';  
 # Make sure this has at least start and finish  
    if ($#order==0) {  
        $resources[&getresidx()]='::false';  
        $order[1]=$#resources;  
    }  
 # Make the last one a finish resource  
    ($name,$url,$ext)=split(/\:/,$resources[$order[$#order]]);  
    $resources[$order[$#order]]=$name.':'.$url.':'.$ext.':finish:res';  
 }  
   
 # ------------------------------------------------------------------- Store map  
   
 sub storemap {  
     my $realfn=shift;  
     my $fn=$realfn;  
 # unless this is forced to work from the original file, use a temporary file  
 # instead  
     unless (shift) {  
        $fn=$realfn.'.tmp';  
        unless (-e $fn) {  
   copy($realfn,$fn);  
        }  
     }  
 # 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($resparms[$order[$i]])) {  
     foreach (split('&&&',$resparms[$order[$i]])) {  
  if ($_) {  
     $output.='<&>objparms<:>'.$order[$i].'<:>'.$_;  
  }  
     }  
  }  
         if (defined($order[$i+1])) {  
     if (defined($resources[$order[$i+1]])) {  
                $output.='<&>objlinks<:>'.$k.'<:>'.  
    $order[$i].':'.$order[$i+1].':0';  
        $k++;  
             }  
         }  
     }  
     for (my $i=0; $i<=$#zombies; $i++) {  
         if (defined($zombies[$i])) {  
     $output.='<&>objcont<:>'.$i.'<:>'.$zombies[$i];  
         }  
     }  
     $output=~s/http\&colon\;\/\///g;  
     $env{'form.output'}=$output;  
     return   
      &Apache::lonratsrv::loadmap($fn,&Apache::lonratsrv::savemap($fn,''));  
 }  
   
 # ------------------------------------------ Store and get parameters in global  
   
 sub storeparameter {  
     my ($to,$name,$value,$ptype)=@_;  
     my $newentry='';  
     my $nametype='';  
     foreach (split('&&&',$resparms[$to])) {  
  my ($thistype,$thisname,$thisvalue)=split('___',$_);  
  if ($thisname) {  
     unless ($thisname eq $name) {  
  $newentry.=$_.'&&&';  
     } else {  
  $nametype=$thistype;  
     }  
  }  
     }  
     unless ($ptype) { $ptype=$nametype; }  
     unless ($ptype) { $ptype='string'; }  
     $newentry.=$ptype.'___'.$name.'___'.$value;  
     $resparms[$to]=$newentry;  
 }  
   
 sub delparameter {  
     my ($to,$name)=@_;  
     my $newentry='';  
     my $nametype='';  
     foreach (split('&&&',$resparms[$to])) {  
  my ($thistype,$thisname,$thisvalue)=split('___',$_);  
  if ($thisname) {  
     unless ($thisname eq $name) {  
  $newentry.=$_.'&&&';  
     }  
  }  
     }  
     $resparms[$to]=$newentry;  
 }  
   
 sub getparameter {  
     my ($to,$name)=@_;  
     my $value=undef;  
     my $ptype=undef;  
     foreach (split('&&&',$resparms[$to])) {  
  my ($thistype,$thisname,$thisvalue)=split('___',$_);  
  if ($thisname eq $name) {  
     $value=$thisvalue;  
     $ptype=$thistype;  
  }  
     }  
     return ($value,$ptype);  
 }  
   
 # ----------------------------------------------------------------- Edit script  # ----------------------------------------------------------------- Edit script
 sub editscript {  sub editscript {
     my $mode=shift;      my $mode=shift;
     my $resurl=&Apache::loncommon::lastresurl();      my $resurl=
    &Apache::loncommon::escape_single(&Apache::loncommon::lastresurl());
     return(<<ENDSCRIPT);      return(<<ENDSCRIPT);
 var srch;  var srch;
 var srchflag=-1; // 1 means currently open  var srchflag=-1; // 1 means currently open
Line 688  function srchclose() { Line 271  function srchclose() {
   
 // -------------------------------------------------------- Open indexer window  // -------------------------------------------------------- Open indexer window
 function idxopen(mode) {  function idxopen(mode) {
    var options="scrollbars=1,resizable=1,menubar=0";     var options="scrollbars=1,resizable=1,menubar=0,location=1,toolbar=1";
    idxmode=mode;     idxmode=mode;
    idxflag=1;     idxflag=1;
    idx=open("$resurl/?launch=1&mode=$mode&catalogmode="+mode,"idxout",options);     idx=open('$resurl/?launch=1&mode=$mode&catalogmode='+mode,'idxout',options);
    idx.focus();     idx.focus();
 }  }
   
 // ------------------------------------------------------ Open groupsort window  // ------------------------------------------------------ Open groupsort window
 function groupopen(url,recover) {  function groupopen(url,recover,bookmarks) {
    var options="scrollbars=1,resizable=1,menubar=0";     var options="scrollbars=1,resizable=1,menubar=0";
    idxflag=1;     idxflag=1;
    idx=open("/adm/groupsort?mode=$mode&recover="+recover+"&readfile="+url,"idxout",options);     idx=open("/adm/groupsort?mode=$mode&recover="+recover+"&readfile="+url+"&bookmarks="+bookmarks,"idxout",options);
    idx.focus();     idx.focus();
 }  }
   
Line 713  function srchopen(mode) { Line 296  function srchopen(mode) {
 }  }
 // ----------------------------------------------------- launch indexer browser  // ----------------------------------------------------- launch indexer browser
 function groupsearch() {  function groupsearch() {
    srchcheck('groupsearch');     srchcheck('import');
 }  }
   
 function groupimport() {  function groupimport() {
    idxcheck('groupimport');     idxcheck('import');
 }  }
   
 // ------------------------------------------------------- Do srch status check  // ------------------------------------------------------- Do srch status check
Line 754  function idxcheck(mode) { Line 337  function idxcheck(mode) {
         }          }
         url += 'element=' + elementname + '';          url += 'element=' + elementname + '';
         var title = 'Browser';          var title = 'Browser';
         var options = 'scrollbars=1,resizable=1,menubar=0';          var options = 'scrollbars=1,resizable=1,menubar=0,toolbar=1,location=1';
         options += ',width=700,height=600';          options += ',width=700,height=600';
         editbrowser = open(url,title,options,'1');          editbrowser = open(url,title,options,'1');
         editbrowser.focus();          editbrowser.focus();
Line 772  sub smpedt { Line 355  sub smpedt {
        copy($tmpfn,&Apache::lonnet::filelocation('',$url));         copy($tmpfn,&Apache::lonnet::filelocation('',$url));
        unlink($tmpfn);         unlink($tmpfn);
        my ($errtext,$fatal)=         my ($errtext,$fatal)=
                            &mapread(&Apache::lonnet::filelocation('',$url),'');     &LONCAPA::map::mapread(&Apache::lonnet::filelocation('',$url),'');
        unless ($fatal) {         unless ($fatal) {
    $targetmsg='<b>'.&mt('Saved.').'</b><br />';     $targetmsg='<b>'.&mt('Saved.').'</b><br />';
        } else {         } else {
Line 783  sub smpedt { Line 366  sub smpedt {
        $targetmsg='<b>'.&mt('Reverted.').'</b><br />';         $targetmsg='<b>'.&mt('Reverted.').'</b><br />';
        unlink($tmpfn);         unlink($tmpfn);
        my ($errtext,$fatal)=         my ($errtext,$fatal)=
                            &mapread(&Apache::lonnet::filelocation('',$url),'');     &LONCAPA::map::mapread(&Apache::lonnet::filelocation('',$url),'');
    }     }
    if (-e $tmpfn) {     if (-e $tmpfn) {
       $targetmsg=        $targetmsg=
         '<b><font color="red">'.&mt('You are working with an unsaved version of your map.').'</font></b><br>';          '<b><font color="red">'.&mt('You are working with an unsaved version of your map.').'</font></b><br>';
       my ($errtext,$fatal)=&mapread($tmpfn,'');        my ($errtext,$fatal)=&LONCAPA::map::mapread($tmpfn,'');
    }     }
 # ---------------------------------------------------------- Process form input  # ---------------------------------------------------------- Process form input
   
Line 871  sub smpedt { Line 454  sub smpedt {
     &Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$env{'form.importmap'}))) {      &Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$env{'form.importmap'}))) {
    my ($name,$url)=split(/\:/,$_);     my ($name,$url)=split(/\:/,$_);
            if ($url) {             if ($url) {
               $importdetail.='&'.&Apache::lonnet::escape($name).'='.                $importdetail.='&'.&escape($name).'='.
          &Apache::lonnet::escape($url);           &escape($url);
   }    }
        }         }
   
Line 891  sub smpedt { Line 474  sub smpedt {
        if (defined($targetselect[-1])) {         if (defined($targetselect[-1])) {
    $lastsel=$targetselect[-1];     $lastsel=$targetselect[-1];
        } else {         } else {
            $lastsel=$#order+1;             $lastsel=$#LONCAPA::map::order+1;
        }         }
        &pastetarget($lastsel,split(/\&/,$env{'form.importdetail'}));         &LONCAPA::map::pastetarget($lastsel,split(/\&/,$env{'form.importdetail'}));
        &storemap(&Apache::lonnet::filelocation('',$url));         &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url));
 # ------------------------------------------------------------------------- Cut  # ------------------------------------------------------------------------- Cut
    } elsif (($env{'form.cut'}) || ($env{'form.copy'})) {     } elsif (($env{'form.cut'}) || ($env{'form.copy'})) {
        $importdetail='';         $importdetail='';
Line 916  sub smpedt { Line 499  sub smpedt {
        }         }
   
        foreach (@targetselect) {         foreach (@targetselect) {
    my ($name,$url)=split(/\:/,$resources[$order[$_-1]]);     my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$LONCAPA::map::order[$_-1]]);
            if ($url) {             if ($url) {
               $importdetail.='&'.&Apache::lonnet::escape($name).'='.                $importdetail.='&'.&escape($name).'='.
          &Apache::lonnet::escape($url);           &escape($url);
   }    }
        }         }
   
Line 934  sub smpedt { Line 517  sub smpedt {
   
        if ($env{'form.cut'}) {         if ($env{'form.cut'}) {
            my @neworder=();             my @neworder=();
            for (my $i=0;$i<=$#order;$i++) {             for (my $i=0;$i<=$#LONCAPA::map::order;$i++) {
                my $include=1;                 my $include=1;
                foreach (@targetselect) {                 foreach (@targetselect) {
    if ($_-1==$i) { $include=0; }     if ($_-1==$i) { $include=0; }
                }                 }
                if ($include) {                  if ($include) { 
    $neworder[$#neworder+1]=$order[$i];      $neworder[$#neworder+1]=$LONCAPA::map::order[$i]; 
        } else {         } else {
    &makezombie($order[$i]);     &LONCAPA::map::makezombie($LONCAPA::map::order[$i]);
        }         }
            }             }
            @order=@neworder;             @LONCAPA::map::order=@neworder;
            &storemap(&Apache::lonnet::filelocation('',$url));                   &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url));      
        }         }
   
 # ----------------------------------------------------------------------- Paste  # ----------------------------------------------------------------------- Paste
Line 955  sub smpedt { Line 538  sub smpedt {
        if (defined($targetselect[-1])) {         if (defined($targetselect[-1])) {
    $lastsel=$targetselect[-1];     $lastsel=$targetselect[-1];
        } else {         } else {
            $lastsel=$#order+1;             $lastsel=$#LONCAPA::map::order+1;
        }         }
        my @newsequence;         my @newsequence;
        my @curimport=split(/\&/,$env{'form.curimpdetail'});         my @curimport=split(/\&/,$env{'form.curimpdetail'});
        foreach (@importselect) {         foreach (@importselect) {
           $newsequence[$#newsequence+1]=$curimport[$_];            $newsequence[$#newsequence+1]=$curimport[$_];
        }         }
        &pastetarget($lastsel,@newsequence);         &LONCAPA::map::pastetarget($lastsel,@newsequence);
        &storemap(&Apache::lonnet::filelocation('',$url));         &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url));
 # -------------------------------------------------------------------- Move up   # -------------------------------------------------------------------- Move up 
    } elsif ($env{'form.moveup'}) {     } elsif ($env{'form.moveup'}) {
        foreach (sort @targetselect) {         foreach (sort @targetselect) {
            if ($_-1>0) {             if ($_-1>0) {
               my $movethis=$order[$_-1];                my $movethis=$LONCAPA::map::order[$_-1];
               $order[$_-1]=$order[$_-2];                $LONCAPA::map::order[$_-1]=$LONCAPA::map::order[$_-2];
               $order[$_-2]=$movethis;                $LONCAPA::map::order[$_-2]=$movethis;
   }    }
        }         }
        &storemap(&Apache::lonnet::filelocation('',$url));         &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url));
 # ------------------------------------------------------------------ Move down  # ------------------------------------------------------------------ Move down
    } elsif ($env{'form.movedown'}) {     } elsif ($env{'form.movedown'}) {
        foreach (reverse sort @targetselect) {         foreach (reverse sort @targetselect) {
            if ($_-1<$#order) {             if ($_-1<$#LONCAPA::map::order) {
               my $movethis=$order[$_-1];                my $movethis=$LONCAPA::map::order[$_-1];
               $order[$_-1]=$order[$_];                $LONCAPA::map::order[$_-1]=$LONCAPA::map::order[$_];
               $order[$_]=$movethis;                $LONCAPA::map::order[$_]=$movethis;
    }     }
        }         }
        &storemap(&Apache::lonnet::filelocation('',$url));         &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url));
 # --------------------------------------------------------------------- Rename  # --------------------------------------------------------------------- Rename
    } elsif ($env{'form.renameres'}) {     } elsif ($env{'form.renameres'}) {
        my $residx=$Apache::lonratedt::order[$env{'form.renameidx'}-1];         my $residx=$LONCAPA::map::order[$env{'form.renameidx'}-1];
        my ($name,@resrest)=split(/\:/,$Apache::lonratedt::resources[$residx]);         my ($name,@resrest)=split(/\:/,$LONCAPA::map::resources[$residx]);
        $name=$env{'form.renametitle'};         $name=$env{'form.renametitle'};
        $name=~s/\:/\&colon\;/g;         $name=~s/\:/\&colon\;/g;
        $Apache::lonratedt::resources[$residx]=$name.':'.join(':',@resrest);         $LONCAPA::map::resources[$residx]=$name.':'.join(':',@resrest);
        &storemap(&Apache::lonnet::filelocation('',$url));         &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url));
    }     }
 # ------------------------------------------------------------ Assemble windows  # ------------------------------------------------------------ Assemble windows
         
Line 1006  sub smpedt { Line 589  sub smpedt {
           my ($name,$url)=split(/\=/,$_);            my ($name,$url)=split(/\=/,$_);
           unless ($name) { $name=(split(/\//,$url))[-1]; }            unless ($name) { $name=(split(/\//,$url))[-1]; }
           unless ($name) { $name='EMPTY'; }            unless ($name) { $name='EMPTY'; }
           '<option value="'.$idx.'">'.&Apache::lonnet::unescape($name).            '<option value="'.$idx.'">'.&unescape($name).
                                     '</option>';                                      '</option>';
       }        }
    } split(/\&/,$importdetail));     } split(/\&/,$importdetail));
Line 1016  sub smpedt { Line 599  sub smpedt {
    my $targetwindow=            my $targetwindow=       
        '<option value="0"> ------- '.&mt('Target Edit Map').' ------- </option>'.         '<option value="0"> ------- '.&mt('Target Edit Map').' ------- </option>'.
      join("\n",map {        join("\n",map { 
        my ($name,$url)=split(/\:/,$resources[$_]);         my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$_]);
        unless ($name) {  $name=(split(/\//,$url))[-1]; }         unless ($name) {  $name=(split(/\//,$url))[-1]; }
        unless ($name) { $name='EMPTY'; }         unless ($name) { $name='EMPTY'; }
        $targetdetail.='&'.&Apache::lonnet::escape($name).'='.         $targetdetail.='&'.&escape($name).'='.
                   &Apache::lonnet::escape($url);                    &escape($url);
        $idx++;         $idx++;
        $name=~s/\&colon;/\:/g;         $name=~s/\&colon;/\:/g;
        '<option value="'.$idx.'">'.$name.'</option>';         '<option value="'.$idx.'">'.$name.'</option>';
    } @order);     } @LONCAPA::map::order);
   
 # ----------------------------------------------------- Start simple RAT screen  # ----------------------------------------------------- Start simple RAT screen
    my $editscript=&editscript('simple');     my $editscript=&editscript('simple');
Line 1034  sub smpedt { Line 617  sub smpedt {
       'nt' => 'New Title',        'nt' => 'New Title',
       'se' => 'Search',        'se' => 'Search',
       'im' => 'Import',        'im' => 'Import',
                                         'bk' => 'Import Bookmarks',
       'vi' => 'View',        'vi' => 'View',
       'lm' => 'Load Map',        'lm' => 'Load Map',
       'ds' => 'Discard Selected',        'ds' => 'Discard Selected',
Line 1051  sub smpedt { Line 635  sub smpedt {
                                       'reco' => 'Recover Deleted'                                        'reco' => 'Recover Deleted'
       );        );
    my $js=<<ENDJS;     my $js=<<ENDJS;
 <script type="text/javascript>  <script type="text/javascript">
   
    $editscript     $editscript
   
Line 1097  sub smpedt { Line 681  sub smpedt {
 ENDJS  ENDJS
   
     my $start_page = &Apache::loncommon::start_page(undef,$js).      my $start_page = &Apache::loncommon::start_page(undef,$js).
         &Apache::loncommon::help_open_menu('',          &Apache::loncommon::help_open_menu('Sequence_Simple_Editor_Creation',
    'Sequence_Simple_Editor_Creation',     'Sequence_Simple_Editor_Creation',
    'Sequence_Simple_Editor_Creation',     6,'RAT');    
    '',6,'RAT');      
     my $end_page = &Apache::loncommon::end_page();      my $end_page = &Apache::loncommon::end_page();
   
     $r->print(<<ENDSMPHEAD);      $r->print(<<ENDSMPHEAD);
Line 1136  value="Select Map"><input type=submit na Line 719  value="Select Map"><input type=submit na
 <input type=button onClick=  <input type=button onClick=
 "javascript:impfortarget.value=1;groupimport();" value="$lt{'im'}">  "javascript:impfortarget.value=1;groupimport();" value="$lt{'im'}">
 <input type=button onClick=  <input type=button onClick=
 "javascript:impfortarget.value=1;javascript:groupopen('$url',1);" value="$lt{'reco'}">  "javascript:impfortarget.value=1;groupopen(0,1,1);" value="$lt{'bk'}">
   <input type=button onClick=
   "javascript:impfortarget.value=1;groupopen('$url',1,0);" value="$lt{'reco'}">
 $lt{'as'}  $lt{'as'}
 <hr>  <hr>
 <input type=submit name="moveup" value="$lt{'mu'}">  <input type=submit name="moveup" value="$lt{'mu'}">
Line 1192  sub viewmap { Line 777  sub viewmap {
     my ($r,$url,$adv,$errtext)=@_;      my ($r,$url,$adv,$errtext)=@_;
     $r->print(      $r->print(
       &Apache::loncommon::start_page('Edit Content of a Map').        &Apache::loncommon::start_page('Edit Content of a Map').
       &Apache::loncommon::help_open_menu('','','','',6,'RAT').        &Apache::loncommon::help_open_menu('','',6,'RAT').
       &buttons($adv));        &buttons($adv));
     if ($errtext) {      if ($errtext) {
  $r->print($errtext.'<hr />');   $r->print($errtext.'<hr />');
Line 1210  sub viewmap { Line 795  sub viewmap {
                '<th>'.&mt('Link to resource in Construction Space').'</th>'.                 '<th>'.&mt('Link to resource in Construction Space').'</th>'.
                '</tr>');                 '</tr>');
     my @backgroundColors = ("#FFFFFF", "#F6F6F6");      my @backgroundColors = ("#FFFFFF", "#F6F6F6");
     foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {      foreach (&LONCAPA::map::attemptread(&Apache::lonnet::filelocation('',$url))) {
  if (defined($_)) {   if (defined($_)) {
             $idx++;              $idx++;
     my ($title,$url,$cond)=split(/\:/,$_);      my ($title,$url,$cond)=split(/\:/,$_);
Line 1219  sub viewmap { Line 804  sub viewmap {
             $url=~s/\&colon\;/\:/g;              $url=~s/\&colon\;/\:/g;
             unless ($title) { $title=(split(/\//,$url))[-1] };              unless ($title) { $title=(split(/\//,$url))[-1] };
             unless ($title) { $title='<i>'.&mt('Empty').'</i>'; }              unless ($title) { $title='<i>'.&mt('Empty').'</i>'; }
             my $resurl = &Apache::lonratsrv::qtescape($url);              my $resurl = &LONCAPA::map::qtescape($url);
             my $resfilepath = $Apache::lonnet::perlvar{'lonDocRoot'}.$resurl;              my $resfilepath = $Apache::lonnet::perlvar{'lonDocRoot'}.$resurl;
             my $filename;               my $filename; 
             if ($resurl =~ m#/([^/]+)$#) {              if ($resurl =~ m#/([^/]+)$#) {
Line 1230  sub viewmap { Line 815  sub viewmap {
             my $bgcol = $idx%2;               my $bgcol = $idx%2; 
             $r->print('<tr bgcolor='.$backgroundColors[$bgcol].'><td>'.              $r->print('<tr bgcolor='.$backgroundColors[$bgcol].'><td>'.
                       '<img src="'.&Apache::loncommon::icon($resfilepath).                        '<img src="'.&Apache::loncommon::icon($resfilepath).
                       '" /></td><td>'.&Apache::lonratsrv::qtescape($title).                        '" /></td><td>'.&LONCAPA::map::qtescape($title).
                       '</td><td>'.$filename.'</td><td>');                        '</td><td>'.$filename.'</td><td>');
             if ($url) {              if ($url) {
  $r->print('<a href="'.$resurl.'">'.&mt('Resource space').'</a>');   $r->print('<a href="'.$resurl.'">'.&mt('Resource space').'</a>');
Line 1287  sub handler { Line 872  sub handler {
   my $fatal=0;    my $fatal=0;
   
 # -------------------------------------------------------------------- Load map  # -------------------------------------------------------------------- Load map
   ($errtext,$fatal)=&mapread($fn,$errtext);    ($errtext,$fatal)=&LONCAPA::map::mapread($fn,$errtext);
   
   if ($fatal==1) { $adv=1; }    if ($fatal==1) { $adv=1; }
   

Removed from v.1.76  
changed lines
  Added in v.1.85


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.