--- loncom/interface/londocs.pm	2014/03/11 00:57:23	1.580
+++ loncom/interface/londocs.pm	2014/12/04 14:27:06	1.589
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Documents
 #
-# $Id: londocs.pm,v 1.580 2014/03/11 00:57:23 raeburn Exp $
+# $Id: londocs.pm,v 1.589 2014/12/04 14:27:06 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1191,10 +1191,14 @@ sub print_paste_buffer {
                     $icon = &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL'));
                     $icon .= '/navmap.folder.closed.gif';
                 }
+                my $title = $env{'docs.markedcopy_title_'.$suffix};
+                if ($title eq '') {
+                    ($title) = ($url =~ m{/([^/]+)$});
+                }
                 $buffer = '<img src="'.$icon.'" alt="" class="LC_icon" />'.
                           ': '.
                           &Apache::loncommon::parse_supplemental_title(
-                             &LONCAPA::map::qtescape($env{'docs.markedcopy_title_'.$suffix}));
+                             &LONCAPA::map::qtescape($title));
             }
             $pasteitems .= '<div class="LC_left_float">';
             my ($options,$onclick);
@@ -2603,26 +2607,44 @@ sub update_parameter {
         }
         return $haschanges;
     } else {
-        return 0 if ($env{'form.changeparms'} !~ /^($valid_parameters_re)$/);
+        my $haschanges = 0;
+        return $haschanges if ($env{'form.changeparms'} !~ /^($valid_parameters_re)$/);
 
         my $which = $env{'form.changeparms'};
         my $idx = $env{'form.setparms'};
+        my $oldvalue = 0;
+        my $newvalue = 0;
+        my $current = (&LONCAPA::map::getparameter($idx,'parameter_'.$which))[0];
+        if ($which eq 'randompick') {
+            if ($current =~ /^(\d+)$/) {
+                $oldvalue = $1;
+            }
+        } elsif ($current =~ /^yes$/i) {
+            $oldvalue = 1;
+        }
         if ($env{'form.'.$which.'_'.$idx}) {
-	    my $value = ($which eq 'randompick') ? $env{'form.rpicknum_'.$idx}
-	                                         : 'yes';
-	    &LONCAPA::map::storeparameter($idx, 'parameter_'.$which, $value,
-				          $parameter_type{$which});
-	    &remember_parms($idx,$which,'set',$value);
-        } else {
-	    &LONCAPA::map::delparameter($idx,'parameter_'.$which);
-
-	    &remember_parms($idx,$which,'del');
+	    $newvalue = ($which eq 'randompick') ? $env{'form.rpicknum_'.$idx}
+	                                         : 1;
         }
-        return 1;
+        if ($oldvalue ne $newvalue) {
+            $haschanges = 1;
+            if ($newvalue) {
+                my $storeval = 'yes';
+                if ($which eq 'randompick') {
+                    $storeval = $newvalue;
+                }
+	        &LONCAPA::map::storeparameter($idx, 'parameter_'.$which, $storeval,
+				              $parameter_type{$which});
+	        &remember_parms($idx,$which,'set',$storeval);
+            } else {
+	        &LONCAPA::map::delparameter($idx,'parameter_'.$which);
+	        &remember_parms($idx,$which,'del');
+            }
+        }
+        return $haschanges;
     }
 }
 
-
 sub handle_edit_cmd {
     my ($coursenum,$coursedom) =@_;
     if ($env{'form.cmd'} eq '') {
@@ -2714,7 +2736,7 @@ sub editor {
 	&snapshotbefore();
 
 	if (&update_parameter()) {
-	    ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container);
+	    ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container,1);
 	    return $errtext if ($fatal);
 	}
 
@@ -2810,7 +2832,7 @@ sub editor {
                     my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]);
                     $name=&LONCAPA::map::qtescape($name);
                     $url=&LONCAPA::map::qtescape($url);
-                    next unless ($name && $url);
+                    next unless $url;
                     my %denied =
                         &action_restrictions($coursenum,$coursedom,$url,
                                              $env{'form.folderpath'},\%curr_groups);
@@ -3345,7 +3367,7 @@ sub is_supplemental_title {
 sub entryline {
     my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom,
         $crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups)=@_;
-    my ($foldertitle,$renametitle);
+    my ($foldertitle,$renametitle,$oldtitle);
     if (&is_supplemental_title($title)) {
 	($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title);
     } else {
@@ -3358,8 +3380,10 @@ sub entryline {
 
     $renametitle=~s/\\/\\\\/g;
     $renametitle=~s/\&quot\;/\\\"/g;
-    $renametitle=~s/\&#39;/\\\'/g;
+    $renametitle=~s/"/%22/g;
     $renametitle=~s/ /%20/g;
+    $oldtitle = $renametitle;
+    $renametitle=~s/\&#39;/\\\'/g;
     my $line=&Apache::loncommon::start_data_table_row();
     my ($form_start,$form_end,$form_common,$form_param);
 # Edit commands
@@ -3509,7 +3533,7 @@ ENDREM
             }
         }
         $renamelink=(<<ENDREN);
-<a href='javascript:changename("$esc_path","$index","$renametitle");' class="LC_docs_rename">$lt{'rn'}</a>
+<a href='javascript:changename("$esc_path","$index","$oldtitle");' class="LC_docs_rename">$lt{'rn'}</a>
 ENDREN
 	$line.=(<<END);
 <td>
@@ -3824,6 +3848,7 @@ sub new_timebased_suffix {
     if ($type eq 'paste') {
         $prefix = $type;
         $namespace = 'courseeditor';
+        $idtype = 'addcode';
     } elsif ($type eq 'map') {
         $prefix = 'docs';
         if ($area eq 'supplemental') {
@@ -3835,9 +3860,8 @@ sub new_timebased_suffix {
         $prefix = $type;
         $namespace = 'templated';
     }
-    $idtype = 'concat';
     my ($suffix,$freedlock,$error) =
-        &Apache::lonnet::get_timebased_id($prefix,'num',$namespace,$dom,$num);
+        &Apache::lonnet::get_timebased_id($prefix,'num',$namespace,$dom,$num,$idtype);
     if (!$suffix) {
         if ($type eq 'paste') {
             $errtext = &mt('Failed to acquire a unique timestamp-based suffix when adding to the paste buffer.');
@@ -4505,12 +4529,8 @@ sub handler {
         $allowed = &Apache::lonnet::allowed('mdc',$env{'request.course.id'});
     }
 
-    &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['chooseserver',
-                                            'inhibitmenu']);
-  if ($allowed && $env{'form.chooseserver'}) {
-      &choose_dump_server($r);
-      return OK;
-  } elsif ($allowed && $env{'form.verify'}) {
+    &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['inhibitmenu']);
+  if ($allowed && $env{'form.verify'}) {
       &init_breadcrumbs('verify','Verify Content','Docs_Verify_Content');
       &verifycontent($r);
   } elsif ($allowed && $env{'form.listsymbs'}) {
@@ -5463,7 +5483,7 @@ sub decompression_info {
     my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'};
     my $container='sequence';
     my ($pathitem,$hiddenelem);
-    my @hiddens = ('newidx','comment','position','folderpath');
+    my @hiddens = ('newidx','comment','position','folderpath','archiveurl');
     if ($env{'form.folderpath'} =~ /\:1$/) {
         $container='page';
     }
@@ -5471,7 +5491,7 @@ sub decompression_info {
     foreach my $item (@hiddens) {
         if ($env{'form.'.$item}) {
             $hiddenelem .= '<input type="hidden" name="'.$item.'" value="'.
-                           $env{'form.'.$item}.'" />'."\n";
+                           &HTML::Entities::encode($env{'form.'.$item},'<>&"').'" />'."\n";
         }
     }
     return ($destination,$dir_root,$londocroot,$docudom,$docuname,$container,
@@ -5528,25 +5548,34 @@ sub remove_archive {
         } else {
             $delwarning = &mt('An error occurred retrieving the contents of the current folder.');
         }
-        $delwarning .= &mt('As a result the archive file has not been removed.');
+        $delwarning .= ' '.&mt('As a result the archive file has not been removed.');
     } else {
         my $currcmd = $env{'form.cmd'};
         my $position = $env{'form.position'};
+        my $archiveidx = $position;
         if ($position > 0) {
-            $env{'form.cmd'} = 'remove_'.$position;
-            my ($title,$url,@rrest) = 
-                split(/:/,$LONCAPA::map::resources[$LONCAPA::map::order[$position]]);
-            if (&handle_edit_cmd($docuname,$docudom)) {
-                ($errtext,$fatal) = &storemap($docuname,$docudom,$map,1);
-                if ($fatal) {
-                    if ($container eq 'page') {
-                        $delwarning = &mt('An error occurred updating the contents of the current page.');
+            if (($env{'form.autoextract_camtasia'}) && (scalar(@LONCAPA::map::order) == 2)) {
+                $archiveidx = $position-1;
+            }
+            $env{'form.cmd'} = 'remove_'.$archiveidx;
+            my ($title,$url,@rrest) =
+                split(/:/,$LONCAPA::map::resources[$LONCAPA::map::order[$archiveidx]]);
+            if ($url eq $env{'form.archiveurl'}) {
+                if (&handle_edit_cmd($docuname,$docudom)) {
+                    ($errtext,$fatal) = &storemap($docuname,$docudom,$map,1);
+                    if ($fatal) {
+                        if ($container eq 'page') {
+                            $delwarning = &mt('An error occurred updating the contents of the current page.');
+                        } else {
+                            $delwarning = &mt('An error occurred updating the contents of the current folder.');
+                        }
                     } else {
-                        $delwarning = &mt('An error occurred updating the contents of the current folder.');
+                        $delresult = &mt('Archive file removed.');
                     }
-                } else {
-                    $delresult = &mt('Archive file removed.');
                 }
+            } else {
+                $delwarning .=  &mt('Archive file had unexpected item number in folder.').
+                                ' '.&mt('As a result the archive file has not been removed.');
             }
         }
         $env{'form.cmd'} = $currcmd;