[LON-CAPA-cvs] cvs: loncom /interface lonextresedit.pm

raeburn raeburn at source.lon-capa.org
Tue Feb 12 23:41:35 EST 2013


raeburn		Wed Feb 13 04:41:35 2013 EDT

  Modified files:              
    /loncom/interface	lonextresedit.pm 
  Log:
  - Need to provide index in .sequence file for external resource, to allow
    editing of this type of resource in Supplemental Content via "Edit" button. 
  
  
Index: loncom/interface/lonextresedit.pm
diff -u loncom/interface/lonextresedit.pm:1.4 loncom/interface/lonextresedit.pm:1.5
--- loncom/interface/lonextresedit.pm:1.4	Mon Dec  3 14:47:30 2012
+++ loncom/interface/lonextresedit.pm	Wed Feb 13 04:41:35 2013
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Documents
 #
-# $Id: lonextresedit.pm,v 1.4 2012/12/03 14:47:30 raeburn Exp $
+# $Id: lonextresedit.pm,v 1.5 2013/02/13 04:41:35 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -57,9 +57,10 @@
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
     my $chome = $env{'course.'.$env{'request.course.id'}.'.home'};
     my ($supplementalflag,$updated,$output,$errormsg,$residx,$url,$title,$symb);
-    if ((($env{'form.folderpath'} =~ /^supplemental/) && ($env{'form.suppurl'})) ||
-        ($env{'form.symb'} =~ /^uploaded/)) {
-        $supplementalflag = 1;        
+    if (($env{'form.folderpath'} =~ /^supplemental/) && ($env{'form.suppurl'})) {
+        $supplementalflag = 1;
+    } 
+    if (($supplementalflag) || ($env{'form.symb'} =~ /^uploaded/)) {
         ($updated,$output,$errormsg,$residx,$url,$title,$symb) = 
             &process_changes($supplementalflag,$cdom,$cnum,$chome);
         if ($supplementalflag) {
@@ -69,6 +70,7 @@
             if ($title ne $env{'form.title'}) {
                 $env{'form.title'} = $title;
             }
+            $env{'form.idx'} = $residx;
         } else {
             if ($symb ne $env{'form.symb'}) {
                 $env{'form.symb'} = $symb;
@@ -99,20 +101,14 @@
 sub process_changes {
     my ($supplementalflag,$cdom,$cnum,$chome) = @_;
     my ($folder,$container,$output,$errormsg,$updated,$symb,$oldidx,$oldurl,
-        $oldtitle,$residx,$newurl,$newtitle);
+        $oldtitle,$newidx,$newurl,$newtitle,$residx,$url,$title);
     if ($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)$}) {
             $folder = $1;
             $container = $3;
         }
-        if ($url =~ m{^ext/(.+)$}) {
-            $oldurl = $1;
-            if ($oldurl !~ m{^https://}) {
-                $oldurl = 'http://'.$oldurl;
-            }
-        }
         $oldtitle = &Apache::lonnet::gettitle($env{'form.symb'});
     } elsif ($env{'form.folderpath'}) {
         $folder = &unescape( (split('&',$env{'form.folderpath'}))[-2] );
@@ -121,18 +117,33 @@
         $container = 'sequence';
         $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 ($env{'form.importdetail'}) {
-            my ($errtext,$fatal,$mismatchedid);
-            ($newtitle,$newurl, $residx) =
-                map {&unescape($_)} split(/\=/,$env{'form.importdetail'});
-            if (!$supplementalflag && $oldidx) {
-               if ($oldidx != $residx) {
-                   $mismatchedid = 1;
-                   $residx = $oldidx;
-               }
+            my ($errtext,$fatal,$mismatchedid, at imports);
+            if (!$supplementalflag) {
+                if (($oldidx) && ($oldidx != $newidx)) {
+                    $mismatchedid = 1;
+                }
             }
-            my @imports;
             if ($mismatchedid) {
                 $errormsg = 'Wrong item identifier';
             } elsif (($newtitle eq $oldtitle) && ($newurl eq $oldurl)) {
@@ -152,9 +163,15 @@
                         $errormsg = &mt('Update failed: [_1].',$errtext);
                     } else {
                         $updated = 1;
+                        $title = $newtitle;
+                        if ($newurl ne $oldurl) {
+                            $url = $newurl;
+                            $newurl =~ s{^http://}{};
+                            $newurl = "ext/$newurl";
+                        }
                         if (!$supplementalflag) {
                             if ($newurl ne $oldurl) {
-                                $symb = &Apache::lonnet::encode_symb($map,$residx,"ext/$newurl");
+                                $symb = &Apache::lonnet::encode_symb($map,$residx,$newurl);
                             } else {
                                 $symb = $env{'form.symb'};
                                 if ($symb) {
@@ -162,12 +179,14 @@
                                 }
                             }
                         }
-                        my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum");
+                        my ($furl,$ferr) = 
+                            &Apache::lonuserstate::readmap("$cdom/$cnum");
                         if ($ferr) {
                             $errormsg = &mt('Reload failed: [_1].',$ferr);
                         } else {
-                            &Apache::loncommon::update_content_constraints($cdom,$cnum,$chome,
-                                                                           $cdom.'_'.$cnum);
+                            unless ($supplementalflag) {
+                                &Apache::loncommon::update_content_constraints($cdom,$cnum,$chome,$cdom.'_'.$cnum);
+                            }
                         }
                     }
                 }
@@ -178,11 +197,7 @@
     } else {
         $errormsg = &mt('Information about current external resource is incomplete.');
     }
-    if ($updated) {
-        return ($updated,$output,$errormsg,$residx,$newurl,$newtitle,$symb);
-    } else {
-        return ($updated,$output,$errormsg,$residx,$oldurl,$oldtitle,$symb);
-    }
+    return ($updated,$output,$errormsg,$residx,$url,$title,$symb);
 }
 
 sub extedit_form {




More information about the LON-CAPA-cvs mailing list