Diff for /loncom/interface/lonextresedit.pm between versions 1.4 and 1.5

version 1.4, 2012/12/03 14:47:30 version 1.5, 2013/02/13 04:41:35
Line 57  sub handler { Line 57  sub handler {
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
     my $chome = $env{'course.'.$env{'request.course.id'}.'.home'};      my $chome = $env{'course.'.$env{'request.course.id'}.'.home'};
     my ($supplementalflag,$updated,$output,$errormsg,$residx,$url,$title,$symb);      my ($supplementalflag,$updated,$output,$errormsg,$residx,$url,$title,$symb);
     if ((($env{'form.folderpath'} =~ /^supplemental/) && ($env{'form.suppurl'})) ||      if (($env{'form.folderpath'} =~ /^supplemental/) && ($env{'form.suppurl'})) {
         ($env{'form.symb'} =~ /^uploaded/)) {          $supplementalflag = 1;
         $supplementalflag = 1;              } 
       if (($supplementalflag) || ($env{'form.symb'} =~ /^uploaded/)) {
         ($updated,$output,$errormsg,$residx,$url,$title,$symb) =           ($updated,$output,$errormsg,$residx,$url,$title,$symb) = 
             &process_changes($supplementalflag,$cdom,$cnum,$chome);              &process_changes($supplementalflag,$cdom,$cnum,$chome);
         if ($supplementalflag) {          if ($supplementalflag) {
Line 69  sub handler { Line 70  sub handler {
             if ($title ne $env{'form.title'}) {              if ($title ne $env{'form.title'}) {
                 $env{'form.title'} = $title;                  $env{'form.title'} = $title;
             }              }
               $env{'form.idx'} = $residx;
         } else {          } else {
             if ($symb ne $env{'form.symb'}) {              if ($symb ne $env{'form.symb'}) {
                 $env{'form.symb'} = $symb;                  $env{'form.symb'} = $symb;
Line 99  sub handler { Line 101  sub handler {
 sub process_changes {  sub process_changes {
     my ($supplementalflag,$cdom,$cnum,$chome) = @_;      my ($supplementalflag,$cdom,$cnum,$chome) = @_;
     my ($folder,$container,$output,$errormsg,$updated,$symb,$oldidx,$oldurl,      my ($folder,$container,$output,$errormsg,$updated,$symb,$oldidx,$oldurl,
         $oldtitle,$residx,$newurl,$newtitle);          $oldtitle,$newidx,$newurl,$newtitle,$residx,$url,$title);
     if ($env{'form.symb'}) {      if ($env{'form.symb'}) {
         $symb = $env{'form.symb'};          $symb = $env{'form.symb'};
         (my $map,$oldidx,my $url)=&Apache::lonnet::decode_symb($symb);          (my $map,$oldidx,$oldurl)=&Apache::lonnet::decode_symb($symb);
         if ($map =~ m{^uploaded/$cdom/$cnum/(default(_\d+|))\.(sequence|page)$}) {          if ($map =~ m{^uploaded/$cdom/$cnum/(default(_\d+|))\.(sequence|page)$}) {
             $folder = $1;              $folder = $1;
             $container = $3;              $container = $3;
         }          }
         if ($url =~ m{^ext/(.+)$}) {  
             $oldurl = $1;  
             if ($oldurl !~ m{^https://}) {  
                 $oldurl = 'http://'.$oldurl;  
             }  
         }  
         $oldtitle = &Apache::lonnet::gettitle($env{'form.symb'});          $oldtitle = &Apache::lonnet::gettitle($env{'form.symb'});
     } elsif ($env{'form.folderpath'}) {      } elsif ($env{'form.folderpath'}) {
         $folder = &unescape( (split('&',$env{'form.folderpath'}))[-2] );          $folder = &unescape( (split('&',$env{'form.folderpath'}))[-2] );
Line 121  sub process_changes { Line 117  sub process_changes {
         $container = 'sequence';          $container = 'sequence';
         $supplementalflag = 1;          $supplementalflag = 1;
     }      }
       if ($oldurl =~ m{^ext/(.+)$}) {
           my $external = $1; 
           if ($external =~ m{^https://}) {
               $oldurl = $external;
           } else {
               $oldurl = 'http://'.$oldurl;
           }
       }
       $url = $oldurl;
       $title = $oldtitle;
       if ($env{'form.importdetail'}) {
           ($newtitle,$newurl,$newidx) =
               map {&unescape($_)} split(/\=/,$env{'form.importdetail'});
       }
       if ($supplementalflag) {
           $residx = $newidx;
       } else {
           $residx = $oldidx;
       }
     if ($folder && $container) {      if ($folder && $container) {
         if ($env{'form.importdetail'}) {          if ($env{'form.importdetail'}) {
             my ($errtext,$fatal,$mismatchedid);              my ($errtext,$fatal,$mismatchedid,@imports);
             ($newtitle,$newurl, $residx) =              if (!$supplementalflag) {
                 map {&unescape($_)} split(/\=/,$env{'form.importdetail'});                  if (($oldidx) && ($oldidx != $newidx)) {
             if (!$supplementalflag && $oldidx) {                      $mismatchedid = 1;
                if ($oldidx != $residx) {                  }
                    $mismatchedid = 1;  
                    $residx = $oldidx;  
                }  
             }              }
             my @imports;  
             if ($mismatchedid) {              if ($mismatchedid) {
                 $errormsg = 'Wrong item identifier';                  $errormsg = 'Wrong item identifier';
             } elsif (($newtitle eq $oldtitle) && ($newurl eq $oldurl)) {              } elsif (($newtitle eq $oldtitle) && ($newurl eq $oldurl)) {
Line 152  sub process_changes { Line 163  sub process_changes {
                         $errormsg = &mt('Update failed: [_1].',$errtext);                          $errormsg = &mt('Update failed: [_1].',$errtext);
                     } else {                      } else {
                         $updated = 1;                          $updated = 1;
                           $title = $newtitle;
                           if ($newurl ne $oldurl) {
                               $url = $newurl;
                               $newurl =~ s{^http://}{};
                               $newurl = "ext/$newurl";
                           }
                         if (!$supplementalflag) {                          if (!$supplementalflag) {
                             if ($newurl ne $oldurl) {                              if ($newurl ne $oldurl) {
                                 $symb = &Apache::lonnet::encode_symb($map,$residx,"ext/$newurl");                                  $symb = &Apache::lonnet::encode_symb($map,$residx,$newurl);
                             } else {                              } else {
                                 $symb = $env{'form.symb'};                                  $symb = $env{'form.symb'};
                                 if ($symb) {                                  if ($symb) {
Line 162  sub process_changes { Line 179  sub process_changes {
                                 }                                  }
                             }                              }
                         }                          }
                         my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum");                          my ($furl,$ferr) = 
                               &Apache::lonuserstate::readmap("$cdom/$cnum");
                         if ($ferr) {                          if ($ferr) {
                             $errormsg = &mt('Reload failed: [_1].',$ferr);                              $errormsg = &mt('Reload failed: [_1].',$ferr);
                         } else {                          } else {
                             &Apache::loncommon::update_content_constraints($cdom,$cnum,$chome,                              unless ($supplementalflag) {
                                                                            $cdom.'_'.$cnum);                                  &Apache::loncommon::update_content_constraints($cdom,$cnum,$chome,$cdom.'_'.$cnum);
                               }
                         }                          }
                     }                      }
                 }                  }
Line 178  sub process_changes { Line 197  sub process_changes {
     } else {      } else {
         $errormsg = &mt('Information about current external resource is incomplete.');          $errormsg = &mt('Information about current external resource is incomplete.');
     }      }
     if ($updated) {      return ($updated,$output,$errormsg,$residx,$url,$title,$symb);
         return ($updated,$output,$errormsg,$residx,$newurl,$newtitle,$symb);  
     } else {  
         return ($updated,$output,$errormsg,$residx,$oldurl,$oldtitle,$symb);  
     }  
 }  }
   
 sub extedit_form {  sub extedit_form {

Removed from v.1.4  
changed lines
  Added in v.1.5


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