Diff for /loncom/interface/londocs.pm between versions 1.571 and 1.588

version 1.571, 2013/12/18 18:56:41 version 1.588, 2014/11/25 04:32:13
Line 46  use Apache::lonsimplepage(); Line 46  use Apache::lonsimplepage();
 use HTML::Entities;  use HTML::Entities;
 use HTML::TokeParser;  use HTML::TokeParser;
 use GDBM_File;  use GDBM_File;
   use File::MMagic;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Cwd;  use Cwd;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
Line 301  ENDJS Line 302  ENDJS
                 if ($contents{content}) {                  if ($contents{content}) {
                     $content .= '                      $content .= '
 <div class="LC_Box">  <div class="LC_Box">
 <h4 class="LC_hcell">Content</h4>'.  <h4 class="LC_hcell">'.&mt('Content').'</h4>'.
 $contents{content}.'  $contents{content}.'
 </div>';  </div>';
                 }                  }
                 if ($contents{webreferences}) {                  if ($contents{webreferences}) {
                     $content .= '                       $content .= ' 
 <div class="LC_Box">  <div class="LC_Box">
 <h4 class="LC_hcell">Web References</h4>'.  <h4 class="LC_hcell">'.&mt('Web References').'</h4>'.
 $contents{webreferences}.'  $contents{webreferences}.'
 </div>';  </div>';
                 }                  }
Line 1087  sub update_paste_buffer { Line 1088  sub update_paste_buffer {
     }      }
     &Apache::lonnet::appenv(\%addtoenv);      &Apache::lonnet::appenv(\%addtoenv);
     delete($env{'form.markcopy'});      delete($env{'form.markcopy'});
       return;
 }  }
   
 sub recurse_uploaded_maps {  sub recurse_uploaded_maps {
Line 1124  sub print_paste_buffer { Line 1126  sub print_paste_buffer {
   
     my @currpaste = split(/,/,$env{'docs.markedcopies'});      my @currpaste = split(/,/,$env{'docs.markedcopies'});
     my ($pasteitems,@pasteable);      my ($pasteitems,@pasteable);
       my $clipboardcount = 0;
   
 # Construct identifiers for current contents of user's paste buffer  # Construct identifiers for current contents of user's paste buffer
     foreach my $suffix (@currpaste) {      foreach my $suffix (@currpaste) {
Line 1132  sub print_paste_buffer { Line 1135  sub print_paste_buffer {
         my $url = $env{'docs.markedcopy_url_'.$suffix};          my $url = $env{'docs.markedcopy_url_'.$suffix};
         if (($cid =~ /^$match_domain\_$match_courseid$/) &&          if (($cid =~ /^$match_domain\_$match_courseid$/) &&
             ($url ne '')) {              ($url ne '')) {
               $clipboardcount ++;
             my ($is_external,$othercourse,$fromsupp,$is_uploaded_map,$parent,              my ($is_external,$othercourse,$fromsupp,$is_uploaded_map,$parent,
                 $canpaste,$nopaste,$othercrs,$areachange);                  $canpaste,$nopaste,$othercrs,$areachange);
             my $extension = (split(/\./,$env{'docs.markedcopy_url_'.$suffix}))[-1];              my $extension = (split(/\./,$env{'docs.markedcopy_url_'.$suffix}))[-1];
Line 1225  sub print_paste_buffer { Line 1229  sub print_paste_buffer {
         $pasteitems .= '<div style="padding:0;clear:both;margin:0;border:0"></div>';          $pasteitems .= '<div style="padding:0;clear:both;margin:0;border:0"></div>';
         $form_start = '<form name="pasteform" action="/adm/coursedocs" method="post" onsubmit="return validateClipboard();">';          $form_start = '<form name="pasteform" action="/adm/coursedocs" method="post" onsubmit="return validateClipboard();">';
         if (@pasteable) {          if (@pasteable) {
             $buttons = '<input type="submit" name="pastemarked" value="'.&mt('Paste selected').'" />'.('&nbsp;'x2);              my $value = &mt('Paste to current folder');
               if ($container eq 'page') {
                   $value = &mt('Paste to current page');
               } 
               $buttons = '<input type="submit" name="pastemarked" value="'.$value.'" />'.('&nbsp;'x2);
         }          }
         $buttons .= '<input type="submit" name="clearmarked" value="'.&mt('Clear selected').'" />'.          $buttons .= '<input type="submit" name="clearmarked" value="'.&mt('Remove from clipboard').'" />'.('&nbsp;'x2);
                     '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" />';          if ($clipboardcount > 1) {
         $form_end = '</form>';              $buttons .=
                   '<span style="text-decoration:line-through">'.('&nbsp;'x20).'</span>'.('&nbsp;'x2).
                   '<input type="button" name="checkallclip" value="'.&mt('Check all').'" style="height:20px;" onclick="checkClipboard();" />'.
                   ('&nbsp;'x2).
                   '<input type="button" name="uncheckallclip" value="'.&mt('Uncheck all').'" style="height:20px;" onclick="uncheckClipboard();" />'.
                   ('&nbsp;'x2);
           }
           $form_end = '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" />'.
                       '</form>';
     } else {      } else {
         $pasteitems = &mt('Clipboard is empty');          $pasteitems = &mt('Clipboard is empty');
     }      }
Line 1383  function validateClipboard() { Line 1399  function validateClipboard() {
     }      }
 }  }
   
   function checkClipboard() {
       if (document.pasteform.pasting.length > 1) {
           for (var i=0; i<document.pasteform.pasting.length; i++) {
               document.pasteform.pasting[i].checked = true;
           } 
       }
       return;
   }
   
   function uncheckClipboard() {
       if (document.pasteform.pasting.length >1) {
           for (var i=0; i<document.pasteform.pasting.length; i++) {
               document.pasteform.pasting[i].checked = false;
           }
       }
       return;
   }
   
 END  END
   
 }  }
Line 2569  sub update_parameter { Line 2603  sub update_parameter {
         }          }
         return $haschanges;          return $haschanges;
     } else {      } 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 $which = $env{'form.changeparms'};
         my $idx = $env{'form.setparms'};          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}) {          if ($env{'form.'.$which.'_'.$idx}) {
     my $value = ($which eq 'randompick') ? $env{'form.rpicknum_'.$idx}      $newvalue = ($which eq 'randompick') ? $env{'form.rpicknum_'.$idx}
                                          : 'yes';                                           : 1;
     &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');  
         }          }
         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 {  sub handle_edit_cmd {
     my ($coursenum,$coursedom) =@_;      my ($coursenum,$coursedom) =@_;
     if ($env{'form.cmd'} eq '') {      if ($env{'form.cmd'} eq '') {
Line 2680  sub editor { Line 2732  sub editor {
  &snapshotbefore();   &snapshotbefore();
   
  if (&update_parameter()) {   if (&update_parameter()) {
     ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container);      ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container,1);
     return $errtext if ($fatal);      return $errtext if ($fatal);
  }   }
   
Line 2776  sub editor { Line 2828  sub editor {
                     my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]);                      my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]);
                     $name=&LONCAPA::map::qtescape($name);                      $name=&LONCAPA::map::qtescape($name);
                     $url=&LONCAPA::map::qtescape($url);                      $url=&LONCAPA::map::qtescape($url);
                     next unless ($name && $url);                      next unless $url;
                     my %denied =                      my %denied =
                         &action_restrictions($coursenum,$coursedom,$url,                          &action_restrictions($coursenum,$coursedom,$url,
                                              $env{'form.folderpath'},\%curr_groups);                                               $env{'form.folderpath'},\%curr_groups);
Line 3141  sub process_file_upload { Line 3193  sub process_file_upload {
     my $quotatype = 'unofficial';      my $quotatype = 'unofficial';
     if ($crstype eq 'Community') {      if ($crstype eq 'Community') {
         $quotatype = 'community';              $quotatype = 'community';    
     } elsif ($env{'course.'.$coursedom.'_'.$coursenum.'.internal.instcode'}) {      } elsif ($env{'course.'.$coursedom.'_'.$coursenum.'.internal.coursecode'}) {
         $quotatype = 'official';          $quotatype = 'official';
       } elsif ($env{'course.'.$coursedom.'_'.$coursenum.'.internal.textbook'}) {
           $quotatype = 'textbook';
     }      }
     if (&Apache::loncommon::get_user_quota($coursenum,$coursedom,'course',$quotatype)) {      if (&Apache::loncommon::get_user_quota($coursenum,$coursedom,'course',$quotatype)) {
         $filesize = int($filesize/1000); #expressed in kb          $filesize = int($filesize/1000); #expressed in kb
         $$upload_output = &Apache::loncommon::excess_filesize_warning($coursenum,$coursedom,'course',          $$upload_output = &Apache::loncommon::excess_filesize_warning($coursenum,$coursedom,'course',
                                                                       $env{'form.uploaddoc.filename'},$filesize,'upload');                                                                        $env{'form.uploaddoc.filename'},$filesize,
                                                                         'upload',$quotatype);
         return if ($$upload_output);          return if ($$upload_output);
     }      }
     my ($parseaction,$showupload,$nextphase,$mimetype);      my ($parseaction,$showupload,$nextphase,$mimetype);
Line 3245  sub process_file_upload { Line 3300  sub process_file_upload {
                     $$upload_output .= &mt('No embedded items identified').'<br />';                      $$upload_output .= &mt('No embedded items identified').'<br />';
                 }                  }
                 $$upload_output = '<div id="uploadfileresult">'.$$upload_output.'</div>';                  $$upload_output = '<div id="uploadfileresult">'.$$upload_output.'</div>';
             } elsif (&Apache::loncommon::is_archive_file($mimetype)) {              } elsif ((&Apache::loncommon::is_archive_file($mimetype)) &&
                        ($env{'form.uploaddoc.filename'} =~ /\.(zip|tar|bz2|gz|tar.gz|tar.bz2|tgz)$/i)) {
                 $nextphase = 'decompress_uploaded';                  $nextphase = 'decompress_uploaded';
                 my $position = scalar(@LONCAPA::map::order)-1;                  my $position = scalar(@LONCAPA::map::order)-1;
                 my $noextract = &return_to_editor();                  my $noextract = &return_to_editor();
Line 3307  sub is_supplemental_title { Line 3363  sub is_supplemental_title {
 sub entryline {  sub entryline {
     my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom,      my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom,
         $crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups)=@_;          $crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups)=@_;
     my ($foldertitle,$renametitle);      my ($foldertitle,$renametitle,$oldtitle);
     if (&is_supplemental_title($title)) {      if (&is_supplemental_title($title)) {
  ($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title);   ($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title);
     } else {      } else {
Line 3320  sub entryline { Line 3376  sub entryline {
   
     $renametitle=~s/\\/\\\\/g;      $renametitle=~s/\\/\\\\/g;
     $renametitle=~s/\&quot\;/\\\"/g;      $renametitle=~s/\&quot\;/\\\"/g;
       $renametitle=~s/"/%22/g;
     $renametitle=~s/ /%20/g;      $renametitle=~s/ /%20/g;
       $oldtitle = $renametitle;
       $renametitle=~s/\&#39;/\\\'/g;
     my $line=&Apache::loncommon::start_data_table_row();      my $line=&Apache::loncommon::start_data_table_row();
     my ($form_start,$form_end,$form_common,$form_param);      my ($form_start,$form_end,$form_common,$form_param);
 # Edit commands  # Edit commands
Line 3470  ENDREM Line 3529  ENDREM
             }              }
         }          }
         $renamelink=(<<ENDREN);          $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  ENDREN
  $line.=(<<END);   $line.=(<<END);
 <td>  <td>
Line 3785  sub new_timebased_suffix { Line 3844  sub new_timebased_suffix {
     if ($type eq 'paste') {      if ($type eq 'paste') {
         $prefix = $type;          $prefix = $type;
         $namespace = 'courseeditor';          $namespace = 'courseeditor';
           $idtype = 'addcode';
     } elsif ($type eq 'map') {      } elsif ($type eq 'map') {
         $prefix = 'docs';          $prefix = 'docs';
         if ($area eq 'supplemental') {          if ($area eq 'supplemental') {
Line 3796  sub new_timebased_suffix { Line 3856  sub new_timebased_suffix {
         $prefix = $type;          $prefix = $type;
         $namespace = 'templated';          $namespace = 'templated';
     }      }
     $idtype = 'concat';  
     my ($suffix,$freedlock,$error) =      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 (!$suffix) {
         if ($type eq 'paste') {          if ($type eq 'paste') {
             $errtext = &mt('Failed to acquire a unique timestamp-based suffix when adding to the paste buffer.');              $errtext = &mt('Failed to acquire a unique timestamp-based suffix when adding to the paste buffer.');
Line 4444  sub handler { Line 4503  sub handler {
                'Supplemental','Score_Upload_Form','Adding_Pages',                 'Supplemental','Score_Upload_Form','Adding_Pages',
                'Importing_LON-CAPA_Resource','Importing_IMS_Course',                 'Importing_LON-CAPA_Resource','Importing_IMS_Course',
                        'Uploading_From_Harddrive','Course_Roster','Web_Page',                         'Uploading_From_Harddrive','Course_Roster','Web_Page',
                        'Dropbox') {                         'Dropbox','Simple_Problem') {
  $help{$topic}=&Apache::loncommon::help_open_topic('Docs_'.$topic);   $help{$topic}=&Apache::loncommon::help_open_topic('Docs_'.$topic);
     }      }
     # Composite help files      # Composite help files
Line 4452  sub handler { Line 4511  sub handler {
     'Docs_About_Syllabus,Docs_Editing_Templated_Pages');      'Docs_About_Syllabus,Docs_Editing_Templated_Pages');
     $help{'Simple Page'} = &Apache::loncommon::help_open_topic(      $help{'Simple Page'} = &Apache::loncommon::help_open_topic(
     'Docs_About_Simple_Page,Docs_Editing_Templated_Pages');      'Docs_About_Simple_Page,Docs_Editing_Templated_Pages');
     $help{'Simple Problem'} = &Apache::loncommon::help_open_topic(  
     'Option_Response_Simple');  
     $help{'Bulletin Board'} = &Apache::loncommon::help_open_topic(      $help{'Bulletin Board'} = &Apache::loncommon::help_open_topic(
     'Docs_About_Bulletin_Board,Docs_Editing_Templated_Pages');      'Docs_About_Bulletin_Board,Docs_Editing_Templated_Pages');
     $help{'My Personal Information Page'} = &Apache::loncommon::help_open_topic(      $help{'My Personal Information Page'} = &Apache::loncommon::help_open_topic(
Line 4468  sub handler { Line 4525  sub handler {
         $allowed = &Apache::lonnet::allowed('mdc',$env{'request.course.id'});          $allowed = &Apache::lonnet::allowed('mdc',$env{'request.course.id'});
     }      }
   
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['chooseserver',      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['inhibitmenu']);
                                             'inhibitmenu']);    if ($allowed && $env{'form.verify'}) {
   if ($allowed && $env{'form.chooseserver'}) {  
       &choose_dump_server($r);  
       return OK;  
   } elsif ($allowed && $env{'form.verify'}) {  
       &init_breadcrumbs('verify','Verify Content','Docs_Verify_Content');        &init_breadcrumbs('verify','Verify Content','Docs_Verify_Content');
       &verifycontent($r);        &verifycontent($r);
   } elsif ($allowed && $env{'form.listsymbs'}) {    } elsif ($allowed && $env{'form.listsymbs'}) {
Line 4815  sub handler { Line 4868  sub handler {
                 'title' => 'Title',                  'title' => 'Title',
                 'comment' => 'Comment',                  'comment' => 'Comment',
                 'parse' => 'Upload embedded images/multimedia files if HTML file',                  'parse' => 'Upload embedded images/multimedia files if HTML file',
   );                  'bb5'      => 'Blackboard 5',
                   'bb6'      => 'Blackboard 6',
                   'angel5'   => 'ANGEL 5.5',
                   'webctce4' => 'WebCT 4 Campus Edition',
           );
 # -----------------------------------------------------------------------------  # -----------------------------------------------------------------------------
  my $fileupload=(<<FIUP);   my $fileupload=(<<FIUP);
  $lt{'file'}:<br />   $lt{'file'}:<br />
Line 4846  CHBO Line 4903  CHBO
         $lt{'cms'}:&nbsp;           $lt{'cms'}:&nbsp; 
         <select name="source">          <select name="source">
         <option value="-1" selected="selected">$lt{'se'}</option>          <option value="-1" selected="selected">$lt{'se'}</option>
         <option value="bb5">Blackboard 5</option>          <option value="bb5">$lt{'bb5'}</option>
         <option value="bb6">Blackboard 6</option>          <option value="bb6">$lt{'bb6'}</option>
         <option value="angel5">ANGEL 5.5</option>          <option value="angel5">$lt{'angel5'}</option>
         <option value="webctce4">WebCT 4 Campus Edition</option>          <option value="webctce4">$lt{'webctce4'}</option>
         </select>          </select>
         <input type="hidden" name="folder" value="$imsfolder" />          <input type="hidden" name="folder" value="$imsfolder" />
         </p>          </p>
Line 5001  NSPFORM Line 5058  NSPFORM
  $pathitem   $pathitem
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
  <a class="LC_menubuttons_link" href="javascript:makesmpproblem();">$lt{'sipr'}</a>   <a class="LC_menubuttons_link" href="javascript:makesmpproblem();">$lt{'sipr'}</a>
  $help{'Simple Problem'}   $help{'Simple_Problem'}
  </form>   </form>
   
 NSPROBFORM  NSPROBFORM
Line 5422  sub decompression_info { Line 5479  sub decompression_info {
     my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'};      my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'};
     my $container='sequence';      my $container='sequence';
     my ($pathitem,$hiddenelem);      my ($pathitem,$hiddenelem);
     my @hiddens = ('newidx','comment','position','folderpath');      my @hiddens = ('newidx','comment','position','folderpath','archiveurl');
     if ($env{'form.folderpath'} =~ /\:1$/) {      if ($env{'form.folderpath'} =~ /\:1$/) {
         $container='page';          $container='page';
     }      }
Line 5430  sub decompression_info { Line 5487  sub decompression_info {
     foreach my $item (@hiddens) {      foreach my $item (@hiddens) {
         if ($env{'form.'.$item}) {          if ($env{'form.'.$item}) {
             $hiddenelem .= '<input type="hidden" name="'.$item.'" value="'.              $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,      return ($destination,$dir_root,$londocroot,$docudom,$docuname,$container,
Line 5487  sub remove_archive { Line 5544  sub remove_archive {
         } else {          } else {
             $delwarning = &mt('An error occurred retrieving the contents of the current folder.');              $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 {      } else {
         my $currcmd = $env{'form.cmd'};          my $currcmd = $env{'form.cmd'};
         my $position = $env{'form.position'};          my $position = $env{'form.position'};
           my $archiveidx = $position;
         if ($position > 0) {          if ($position > 0) {
             $env{'form.cmd'} = 'remove_'.$position;              if (($env{'form.autoextract_camtasia'}) && (scalar(@LONCAPA::map::order) == 2)) {
             my ($title,$url,@rrest) =                   $archiveidx = $position-1;
                 split(/:/,$LONCAPA::map::resources[$LONCAPA::map::order[$position]]);              }
             if (&handle_edit_cmd($docuname,$docudom)) {              $env{'form.cmd'} = 'remove_'.$archiveidx;
                 ($errtext,$fatal) = &storemap($docuname,$docudom,$map,1);              my ($title,$url,@rrest) =
                 if ($fatal) {                  split(/:/,$LONCAPA::map::resources[$LONCAPA::map::order[$archiveidx]]);
                     if ($container eq 'page') {              if ($url eq $env{'form.archiveurl'}) {
                         $delwarning = &mt('An error occurred updating the contents of the current page.');                  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 {                      } 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;          $env{'form.cmd'} = $currcmd;
Line 6654  ENDINJECT Line 6720  ENDINJECT
 sub dump_switchserver_js {  sub dump_switchserver_js {
     my @hosts = @_;      my @hosts = @_;
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
         dump => 'Copying Content to Authoring Space requires switching server.',          dump => 'Copying content to Authoring Space requires switching server.',
         swit => 'Switch server?',          swit => 'Switch server?',
         duco => 'Copying Content to Authoring Space',          duco => 'Copying Content to Authoring Space',
         yone => 'You need to switch to a server housing an Authoring Space for which you are author or co-author.',          yone => 'You need to switch to a server housing an Authoring Space for which you are author or co-author.',

Removed from v.1.571  
changed lines
  Added in v.1.588


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