Diff for /loncom/interface/londocs.pm between versions 1.273 and 1.282

version 1.273, 2007/05/22 00:38:25 version 1.282, 2007/07/02 23:43:36
Line 379  sub exportcourse { Line 379  sub exportcourse {
                 }                  }
                 $display .= ' />'."\n";                  $display .= ' />'."\n";
                 for (my $i=0; $i<$depth; $i++) {                  for (my $i=0; $i<$depth; $i++) {
                     $display .= '<img src="/adm/lonIcons/whitespace1.gif" width="25" height="1" alt="" border="0" /><img src="/adm/lonIcons/whitespace1.gif" width="25" height="1" alt="" border="0" />'."\n";                      $display .= '<img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" /><img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" />'."\n";
                 }                  }
                 if ($curRes->is_sequence()) {                  if ($curRes->is_sequence()) {
                     $display .= '<img src="/adm/lonIcons/navmap.folder.open.gif">&nbsp;'."\n";                      $display .= '<img src="/adm/lonIcons/navmap.folder.open.gif">&nbsp;'."\n";
Line 904  sub store_template { Line 904  sub store_template {
 # Imports the given (name, url) resources into the course  # Imports the given (name, url) resources into the course
 # coursenum, coursedom, and folder must precede the list  # coursenum, coursedom, and folder must precede the list
 sub group_import {  sub group_import {
     my $coursenum = shift;      my ($coursenum, $coursedom, $folder, $container, $caller, @files) = @_;
     my $coursedom = shift;  
     my $folder = shift;      while (@files) {
     my $container = shift;   my $name = shift(@files);
     my $caller = shift;   my $url  = shift(@files);
     while (@_) {   #FIXME check if file exists before overwriting, might be restoring it
  my $name = shift;          if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) 
  my $url = shift;       && ($caller eq 'londocs')
         if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) && ($caller eq 'londocs')) {       && (!&Apache::lonnet::stat_file($url))) {
       
             my $errtext = '';              my $errtext = '';
             my $fatal = 0;              my $fatal = 0;
             my $newmapstr = '<map>'."\n".              my $newmapstr = '<map>'."\n".
Line 957  sub breadcrumbs { Line 958  sub breadcrumbs {
     my $folderpath;      my $folderpath;
     my $cpinfo='';      my $cpinfo='';
     my $plain='';      my $plain='';
     if ($env{'form.markedcopy_url'}) {  
        $cpinfo='&markedcopy_url='.  
                &escape($env{'form.markedcopy_url'}).  
                '&markedcopy_title='.  
                &escape($env{'form.markedcopy_title'});  
     }  
     my $randompick=-1;      my $randompick=-1;
     my $isencrypted=0;      my $isencrypted=0;
     my $ishidden=0;      my $ishidden=0;
Line 1154  sub docs_change_log { Line 1149  sub docs_change_log {
  for (my $idx=0;$idx<=$docslog{$id}{'logentry'}{'maxidx'};$idx++) {   for (my $idx=0;$idx<=$docslog{$id}{'logentry'}{'maxidx'};$idx++) {
     my $oldname=(split(/\:/,$docslog{$id}{'logentry'}{'before_resources_'.$idx}))[0];      my $oldname=(split(/\:/,$docslog{$id}{'logentry'}{'before_resources_'.$idx}))[0];
     my $newname=(split(/\:/,$docslog{$id}{'logentry'}{'after_resources_'.$idx}))[0];      my $newname=(split(/\:/,$docslog{$id}{'logentry'}{'after_resources_'.$idx}))[0];
     if ($oldname ne $newname) {      if ($oldname ne '' && $oldname ne $newname) {
  $r->print(&LONCAPA::map::qtescape($newname));   $r->print(&LONCAPA::map::qtescape($newname));
     }      }
  }           }        
Line 1184  sub docs_change_log { Line 1179  sub docs_change_log {
               || $shown<=$env{'form.show'})) { last; }                || $shown<=$env{'form.show'})) { last; }
     }      }
     $r->print(&Apache::loncommon::end_data_table());      $r->print(&Apache::loncommon::end_data_table());
     $r->print(&Apache::loncommon::end_page());  }
   
   sub update_paste_buffer {
       my ($coursenum,$coursedom) = @_;
   
       return if (!defined($env{'form.markcopy'}));
       return if (!defined($env{'form.copyfolder'}));
       return if ($env{'form.markcopy'} < 0);
   
       my ($errtext,$fatal) = &mapread($coursenum,$coursedom,
       $env{'form.copyfolder'});
       
       return if ($fatal);
   
   # Mark for copying
       my ($title,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$env{'form.markcopy'}]]);
       if (&is_supplemental_title($title)) {
    ($title) = &parse_supplemental_title($title);
       }
       &Apache::lonnet::appenv('docs.markedcopy_title' => $title,
       'docs.markedcopy_url'   => $url);
       delete($env{'form.markcopy'});
   }
   
   sub print_paste_buffer {
       my ($r,$container) = @_;
       return if (!defined($env{'docs.markedcopy_url'}));
   
       $r->print(<<ENDPASTE);
   <p><form name="pasteform" action="/adm/coursedocs" method="post">
   ENDPASTE
       $r->print('<input type="submit" name="pastemarked" value="'.&mt('Paste').'" /> ');
   
       my $type;
       if ($env{'docs.markedcopy_url'} =~ m{^/adm/wrapper/ext}) {
    $type = &mt('External Resource');
    $r->print($type.': '.&Apache::map::qtescape($env{'docs.markedcopy_title'}));
       }  else {
    my $extension = (split(/\./,$env{'docs.markedcopy_url'}))[-1];
    my $type = &Apache::loncommon::filedescription($extension);
    my $icon = '<img src="'.&Apache::loncommon::icon($extension).
       '" class="LC_icon" />';
    $r->print($icon.$type.': '.  &parse_supplemental_title($env{'docs.markedcopy_title'}));
       }
       if ($container eq 'page') {
    $r->print(<<PAGEINFO);
    <input type="hidden" name="pagepath" value="$env{'form.pagepath'}" />
    <input type="hidden" name="pagesymb" value="$env{'form.pagesymb'}" />
   PAGEINFO
       } else {
    $r->print(<<FOLDERINFO);
           <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />
   FOLDERINFO
       }
       $r->print('</form></p>');
 }  }
   
 sub editor {  sub editor {
     my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output)=@_;      my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$which)=@_;
     my $errtext='';      my $errtext='';
     my $fatal=0;      my $fatal=0;
     my $container='sequence';      my $container='sequence';
     if ($env{'form.pagepath'}) {      if ($env{'form.pagepath'}) {
         $container='page';          $container='page';
     }      }
     ($errtext,$fatal)=      ($errtext,$fatal) = &mapread($coursenum,$coursedom,$folder.'.'.$container);
               &mapread($coursenum,$coursedom,$folder.'.'.$container);  
     if ($#LONCAPA::map::order<1) {      if ($#LONCAPA::map::order<1) {
  my $idx=&LONCAPA::map::getresidx();   my $idx=&LONCAPA::map::getresidx();
  if ($idx<=0) { $idx=1; }   if ($idx<=0) { $idx=1; }
         $LONCAPA::map::order[0]=$idx;          $LONCAPA::map::order[0]=$idx;
         $LONCAPA::map::resources[$idx]='';          $LONCAPA::map::resources[$idx]='';
     }      }
     if (defined($env{'form.markcopy'})) {      
 # Mark for copying  
  my ($title,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$env{'form.markcopy'}]]);  
  $env{'form.markedcopy_title'}=$title;  
  $env{'form.markedcopy_url'}=$url;  
     }  
     my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain)=&breadcrumbs($folder);      my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain)=&breadcrumbs($folder);
     $r->print($breadcrumbtrail);      $r->print($breadcrumbtrail);
     if ($fatal) {      if ($fatal) {
Line 1297  sub editor { Line 1340  sub editor {
     return;      return;
  }   }
     }      }
       
     if ($env{'form.pastemarked'}) {      if ($env{'form.pastemarked'}) {
 # paste resource to end of list  # paste resource to end of list
                 my $url=$env{'form.markedcopy_url'};                  my $url=$env{'docs.markedcopy_url'};
  my $title=$env{'form.markedcopy_title'};   my $title=$env{'docs.markedcopy_title'};
 # Maps need to be copied first  # Maps need to be copied first
  if (($url=~/\.(page|sequence)$/) || ($url=~/^\/uploaded\//)) {   if (($url=~/\.(page|sequence)$/) || ($url=~/^\/uploaded\//)) {
     $title=&mt('Copy of').' '.$title;      $title=&mt('Copy of').' '.$title;
Line 1429  sub editor { Line 1472  sub editor {
                }                 }
            }             }
            &log_differences($plain);             &log_differences($plain);
        }   }
 # ---------------------------------------------------------------- End commands  # ---------------------------------------------------------------- End commands
 # ---------------------------------------------------------------- Print screen  # ---------------------------------------------------------------- Print screen
         my $idx=0;          my $idx=0;
Line 1445  sub editor { Line 1488  sub editor {
            $r->print('<p>'.&mt('Caution: this folder is set to randomly pick a subset of resources. Adding or removing resources from this folder will change the set of resources that the students see, resulting in spurious or missing credit for completed problems, not limited to ones you modify. Do not modify the contents of this folder if it is in active student use.').'</p>');             $r->print('<p>'.&mt('Caution: this folder is set to randomly pick a subset of resources. Adding or removing resources from this folder will change the set of resources that the students see, resulting in spurious or missing credit for completed problems, not limited to ones you modify. Do not modify the contents of this folder if it is in active student use.').'</p>');
         }          }
         $r->print('<table>');          $r->print('<table>');
         foreach (@LONCAPA::map::order) {          foreach my $res (@LONCAPA::map::order) {
            my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$_]);             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);
            unless ($name) {  $name=(split(/\//,$url))[-1]; }             unless ($name) {  $name=(split(/\//,$url))[-1]; }
            unless ($name) { $idx++; next; }             unless ($name) { $idx++; next; }
            $r->print(&entryline($idx,$name,$url,$folder,$allowed,$_,$coursenum));             $r->print(&entryline($idx,$name,$url,$folder,$allowed,$res,
    $coursenum));
            $idx++;             $idx++;
    $shown++;     $shown++;
         }          }
Line 1459  sub editor { Line 1503  sub editor {
     $r->print('<tr><td>'.&mt('Currently no documents.').'</td></tr>');      $r->print('<tr><td>'.&mt('Currently no documents.').'</td></tr>');
  }   }
         $r->print("\n</table>\n");          $r->print("\n</table>\n");
  if ($env{'form.markedcopy_url'}) {  
     $r->print(<<ENDPASTE);   &print_paste_buffer($r,$container);
 <p><form name="pasteform" action="/adm/coursedocs" method="post">  
 <input type="hidden" name="markedcopy_url" value="$env{'form.markedcopy_url'}" />  
 <input type="hidden" name="markedcopy_title" value="$env{'form.markedcopy_title'}" />  
 ENDPASTE  
             $r->print(  
    '<input type="submit" name="pastemarked" value="'.&mt('Paste').  
       '" /> '.&Apache::loncommon::filedescription(  
  (split(/\./,$env{'form.markedcopy_url'}))[-1]).': '.  
       $env{'form.markedcopy_title'});  
             if ($container eq 'page') {  
  $r->print(<<PAGEINFO);  
 <input type="hidden" name="pagepath" value="$env{'form.pagepath'}" />  
 <input type="hidden" name="pagesymb" value="$env{'form.pagesymb'}" />  
 PAGEINFO  
             } else {  
  $r->print(<<FOLDERINFO);  
 <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />  
 FOLDERINFO  
     }  
     $r->print('</form></p>');  
  }  
     }      }
 }  }
   
Line 1553  sub process_file_upload { Line 1577  sub process_file_upload {
                 if ($total_embedded > 0) {                  if ($total_embedded > 0) {
                     my $num = 0;                      my $num = 0;
     my $state = '      my $state = '
    <input type="hidden" name="folderpath" value="'.$env{'form.folderpath'}.'" />     <input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" />
    <input type="hidden" name="cmd" value="upload_embedded" />     <input type="hidden" name="cmd" value="upload_embedded" />
    <input type="hidden" name="newidx" value="'.$newidx.'" />     <input type="hidden" name="newidx" value="'.$newidx.'" />
    <input type="hidden" name="primaryurl" value="'.&escape($url).'" />     <input type="hidden" name="primaryurl" value="'.&escape($url).'" />
Line 1583  sub ask_for_embedded_content { Line 1607  sub ask_for_embedded_content {
  &Apache::loncommon::start_data_table();   &Apache::loncommon::start_data_table();
   
     my $num = 0;      my $num = 0;
     foreach my $embed_file (keys(%{$allfiles})) {      foreach my $embed_file (sort {lc($a) cmp lc($b)} keys(%{$allfiles})) {
  $upload_output .= &Apache::loncommon::start_data_table_row().   $upload_output .= &Apache::loncommon::start_data_table_row().
     '<td>'.$embed_file.'</td><td>';      '<td>'.$embed_file.'</td><td>';
  if ($args->{'error_on_invalid_names'}   if ($args->{'ignore_remote_references'}
       && $embed_file =~ m{^\w+://}) {
       $upload_output.='<span class="LC_warning">'.&mt("URL points to other server.").'</span>';
    } elsif ($args->{'error_on_invalid_names'}
     && $embed_file ne &Apache::lonnet::clean_filename($embed_file,{'keep_path' => 1,})) {      && $embed_file ne &Apache::lonnet::clean_filename($embed_file,{'keep_path' => 1,})) {
           
     $upload_output.='<span class="LC_warning">'.&mt("Invalid characters").'</span>';      $upload_output.='<span class="LC_warning">'.&mt("Invalid characters").'</span>';
       
  } else {   } else {
   
     $upload_output .='      $upload_output .='
            <input name="embedded_item_'.$num.'" type="file" value="bob" />             <input name="embedded_item_'.$num.'" type="file" value="bob" />
            <input name="embedded_orig_'.$num.'" type="hidden" value="'.&escape($embed_file).'" />';             <input name="embedded_orig_'.$num.'" type="hidden" value="'.&escape($embed_file).'" />';
Line 1611  sub ask_for_embedded_content { Line 1640  sub ask_for_embedded_content {
     }      }
     $upload_output .= &Apache::loncommon::end_data_table().'<br />      $upload_output .= &Apache::loncommon::end_data_table().'<br />
    <input type ="hidden" name="number_embedded_items" value="'.$num.'" />     <input type ="hidden" name="number_embedded_items" value="'.$num.'" />
    <input type ="submit" value="Complete upload" />     <input type ="submit" value="'.&mt('Upload Listed Files').'" />
      '.&mt('(only files for which a location has been provided will be uploaded)').'
    </form>';     </form>';
     return $upload_output;      return $upload_output;
 }  }
Line 1635  sub process_secondary_uploads { Line 1665  sub process_secondary_uploads {
     return $filename;      return $filename;
 }  }
   
   sub is_supplemental_title {
       my ($title) = @_;
       return scalar($title =~ m/^(\d+)___&&&___($match_username)___&&&___($match_domain)___&&&___(.*)$/);
   }
   
   sub parse_supplemental_title {
       my ($title) = @_;
   
       my ($foldertitle,$renametitle);
       if ($title =~ /&amp;&amp;&amp;/) {
    $title = &HTML::Entites::decode($title);
       }
    if ($title =~ m/^(\d+)___&&&___($match_username)___&&&___($match_domain)___&&&___(.*)$/) {
    $renametitle=$4;
    my ($time,$uname,$udom) = ($1,$2,$3);
    $foldertitle=&Apache::lontexconvert::msgtexconverted($4);
    my $name =  &Apache::loncommon::plainname($uname,$udom);
    $name = &HTML::Entities::encode($name,'"<>&\'');
    $title='<i>'.&Apache::lonlocal::locallocaltime($time).'</i> '.
       $name.': <br />'.$foldertitle;
       }
       if (wantarray) {
    return ($title,$foldertitle,$renametitle);
       } 
       return $title;
   }
   
 # --------------------------------------------------------------- An entry line  # --------------------------------------------------------------- An entry line
   
 sub entryline {  sub entryline {
     my ($index,$title,$url,$folder,$allowed,$residx,$coursenum)=@_;      my ($index,$title,$url,$folder,$allowed,$residx,$coursenum)=@_;
     $title=&HTML::Entities::encode($title,'"<>&\'');  
     my $renametitle=$title;      my ($foldertitle,$pagetitle,$renametitle);
     my $foldertitle=$title;      if (&is_supplemental_title($title)) {
     my $pagetitle=$title;   ($title,$foldertitle,$renametitle) = &parse_supplemental_title($title);
     my $orderidx=$LONCAPA::map::order[$index];   $pagetitle = $foldertitle;
     if ($title=~ /^(\d+)___&amp;&amp;&amp;___($match_username)___&amp;&amp;&amp;___($match_domain)___&amp;&amp;&amp;___(.*)$/ ) {       } else {
  $foldertitle=&Apache::lontexconvert::msgtexconverted($4);   $title=&HTML::Entities::encode($title,'"<>&\'');
  $renametitle=$4;   $renametitle=$title;
  $title='<i>'.&Apache::lonlocal::locallocaltime($1).'</i> '.   $foldertitle=$title;
     &Apache::loncommon::plainname($2,$3).': <br />'.   $pagetitle=$title;
     $foldertitle;  
     }      }
   
       my $orderidx=$LONCAPA::map::order[$index];
       
   
     $renametitle=~s/\\/\\\\/g;      $renametitle=~s/\\/\\\\/g;
     $renametitle=~s/\&quot\;/\\\"/g;      $renametitle=~s/\&quot\;/\\\"/g;
     my $line='<tr>';      my $line='<tr>';
 # Edit commands  # Edit commands
     my $container;      my $container;
     my $folderpath;      my ($container, $type, $esc_path, $path, $symb);
     if ($env{'form.folderpath'}) {      if ($env{'form.folderpath'}) {
    $type = 'folder';
         $container = 'sequence';          $container = 'sequence';
  $folderpath=&escape($env{'form.folderpath'});   $esc_path=&escape($env{'form.folderpath'});
    $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"');
  # $htmlfoldername=&HTML::Entities::encode($env{'form.foldername'},'<>&"');   # $htmlfoldername=&HTML::Entities::encode($env{'form.foldername'},'<>&"');
     }      }
     my ($pagepath,$pagesymb);  
     if ($env{'form.pagepath'}) {      if ($env{'form.pagepath'}) {
         $container = 'page';          $type = $container = 'page';
         $pagepath=&escape($env{'form.pagepath'});          $esc_path=&escape($path = $env{'form.pagepath'});
         $pagesymb=&escape($env{'form.pagesymb'});   $path = &HTML::Entities::encode($env{'form.pagepath'},'<>&"');
           $symb=&escape($env{'form.pagesymb'});
     }      }
     my $cpinfo='';      my $cpinfo='';
     if ($env{'form.markedcopy_url'}) {  
        $cpinfo='&markedcopy_url='.  
                &escape($env{'form.markedcopy_url'}).  
                '&markedcopy_title='.  
                &escape($env{'form.markedcopy_title'});  
     }  
     if ($allowed) {      if ($allowed) {
  my $incindex=$index+1;   my $incindex=$index+1;
  my $selectbox='';   my $selectbox='';
Line 1722  sub entryline { Line 1778  sub entryline {
         }          }
         my $copylink='&nbsp;';          my $copylink='&nbsp;';
         my $cutlink='&nbsp;';          my $cutlink='&nbsp;';
         if ($env{'form.pagepath'}) {  
            if (!$nocopy) {   if (!$nocopy) {
                $copylink=(<<ENDCOPY);      $copylink=(<<ENDCOPY);
 <a href='javascript:markcopy("$pagepath","$index","$renametitle","page","$pagesymb");'>  <a href='javascript:markcopy("$esc_path","$index","$renametitle","$container","$symb","$folder");'>
 <font size="-2" color="#000099">$lt{'cp'}</font></a></td>  <font size="-2" color="#000099">$lt{'cp'}</font></a>
 ENDCOPY  
            }  
            if (!$nocut) {  
                $cutlink=(<<ENDCUT);  
 <a href='javascript:cutres("$pagepath","$index","$renametitle","page","$pagesymb");'>  
 <font size="-2" color="#550044">$lt{'ct'}</font></a>  
 ENDCUT  
             }  
             $line.=(<<END);  
 <form name="entry_$index" action="/adm/coursedocs" method="post">  
 <input type="hidden" name="pagepath" value="$env{'form.pagepath'}" />  
 <input type="hidden" name="pagesymb" value="$env{'form.pagesymb'}" />  
 <input type="hidden" name="markedcopy_url" value="$env{'form.markedcopy_url'}" />  
 <input type="hidden" name="markedcopy_title" value="$env{'form.markedcopy_title'}" />  
 <input type="hidden" name="setparms" value="$orderidx" />  
 <input type="hidden" name="changeparms" value="0" />  
 <td><table border='0' cellspacing='2' cellpadding='0'>  
 <tr><td bgcolor="#DDDDDD">  
 <a href='/adm/coursedocs?cmd=up_$index&pagepath=$pagepath&pagesymb=$pagesymb$cpinfo'>  
 <img src="${iconpath}move_up.gif" alt='$lt{'up'}' border='0' /></a></td></tr>  
 <tr><td bgcolor="#DDDDDD">  
 <a href='/adm/coursedocs?cmd=down_$index&pagepath=$pagepath&pagesymb=$pagesymb$cpinfo'>  
 <img src="${iconpath}move_down.gif" alt='$lt{'dw'}' border='0' /></a></td></tr>  
 </table></td>  
 <td>$selectbox  
 </td><td bgcolor="#DDDDDD">  
 <a href='javascript:removeres("$pagepath","$index","$renametitle","page","$pagesymb");'>  
 <font size="-2" color="#990000">$lt{'rm'}</font></a>  
 $cutlink  
 <a href='javascript:changename("$pagepath","$index","$renametitle","page","$pagesymb");'>  
 <font size="-2" color="#009900">$lt{'rn'}</font></a>  
 $copylink  
 END  
         } else {  
            if (!$nocopy) {  
                $copylink=(<<ENDCOPY);  
 <a href='javascript:markcopy("$folderpath","$index","$renametitle","sequence");'>  
 <font size="-2" color="#000099">$lt{'cp'}</font></a></td>  
 ENDCOPY  ENDCOPY
             }          }
             if (!$nocut) {   if (!$nocut) {
                $cutlink=(<<ENDCUT);      $cutlink=(<<ENDCUT);
 <a href='javascript:cutres("$folderpath","$index","$renametitle","sequence");'>  <a href='javascript:cutres("$esc_path","$index","$renametitle","$container","$symb","$folder");'>
 <font size="-2" color="#550044">$lt{'ct'}</font></a>  <font size="-2" color="#550044">$lt{'ct'}</font></a>
 ENDCUT  ENDCUT
             }          }
             $line.=(<<END);    $line.=(<<END);
 <form name="entry_$index" action="/adm/coursedocs" method="post">     <form name="entry_$index" action="/adm/coursedocs" method="post">
 <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />     <input type="hidden" name="${type}path" value="$path" />
 <input type="hidden" name="markedcopy_url" value="$env{'form.markedcopy_url'}" />     <input type="hidden" name="${type}symb" value="$symb" />
 <input type="hidden" name="markedcopy_title" value="$env{'form.markedcopy_title'}" />     <input type="hidden" name="setparms" value="$orderidx" />
 <input type="hidden" name="setparms" value="$orderidx" />     <input type="hidden" name="changeparms" value="0" />
 <input type="hidden" name="changeparms" value="0" />  <td>
 <td><table border='0' cellspacing='2' cellpadding='0'>     <table border='0' cellspacing='2' cellpadding='0'>
 <tr><td bgcolor="#DDDDDD">        <tr>
 <a href='/adm/coursedocs?cmd=up_$index&folderpath=$folderpath$cpinfo'>           <td bgcolor="#DDDDDD">
 <img src="${iconpath}move_up.gif" alt='$lt{'up'}' border='0' /></a></td></tr>              <a href='/adm/coursedocs?cmd=up_$index&amp;${type}path=$esc_path&amp;${type}symb=$symb$cpinfo'><img src="${iconpath}move_up.gif" alt='$lt{'up'}' class="LC_icon" /></a>
 <tr><td bgcolor="#DDDDDD">           </td>
 <a href='/adm/coursedocs?cmd=down_$index&folderpath=$folderpath$cpinfo'>        </tr>
 <img src="${iconpath}move_down.gif" alt='$lt{'dw'}' border='0' /></a></td></tr>        <tr>
 </table></td>          <td bgcolor="#DDDDDD">
 <td>$selectbox             <a href='/adm/coursedocs?cmd=down_$index&amp;${type}path=$esc_path&amp;${type}symb=$symb$cpinfo'><img src="${iconpath}move_down.gif" alt='$lt{'dw'}' class="LC_icon" /></a>
 </td><td bgcolor="#DDDDDD">          </td>
 <a href='javascript:removeres("$folderpath","$index","$renametitle","sequence");'>        </tr>
 <font size="-2" color="#990000">$lt{'rm'}</font></a>      </table>
   </td>
   <td>
      $selectbox
   </td>
   <td bgcolor="#DDDDDD">
      <a href='javascript:removeres("$esc_path","$index","$renametitle","$container","$symb");'><font size="-2" color="#990000">$lt{'rm'}</font></a>
 $cutlink  $cutlink
 <a href='javascript:changename("$folderpath","$index","$renametitle","sequence");'>     <a href='javascript:changename("$esc_path","$index","$renametitle","$container","$symb");'><font size="-2" color="#009900">$lt{'rn'}</font></a>
 <font size="-2" color="#009900">$lt{'rn'}</font></a>  
 $copylink  $copylink
   </td>
 END  END
         }  
     }      }
 # Figure out what kind of a resource this is  # Figure out what kind of a resource this is
     my ($extension)=($url=~/\.(\w+)$/);      my ($extension)=($url=~/\.(\w+)$/);
Line 1899  END Line 1923  END
        $path.$pagearg.'.page');         $path.$pagearg.'.page');
  }   }
  $url.='pagepath='.&escape($pagepath).   $url.='pagepath='.&escape($pagepath).
     '&pagesymb='.&escape($symb).$cpinfo;      '&amp;pagesymb='.&escape($symb).$cpinfo;
     }      }
     $line.='<td bgcolor="#FFFFBB"><a href="'.$url.'"><img src="'.$icon.      $line.='<td bgcolor="#FFFFBB"><a href="'.$url.'"><img src="'.$icon.
  '" border="0"></a></td>'.   '" class="LC_icon" /></a></td>'.
         "<td bgcolor='#FFFFBB'>".($url?"<a href=\"$url\">":'').$title.          "<td bgcolor='#FFFFBB'>".($url?"<a href=\"$url\">":'').$title.
         ($url?'</a>':' <font size="-2">'.&mt('(re-initialize course to access)').'</font>')."</td>";          ($url?'</a>':' <font size="-2">'.&mt('(re-initialize course to access)').'</font>')."</td>";
     if (($allowed) && ($folder!~/^supplemental/)) {      if (($allowed) && ($folder!~/^supplemental/)) {
Line 2458  sub handler { Line 2482  sub handler {
     my $uploadtag;      my $uploadtag;
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
     ['folderpath','pagepath',      ['folderpath','pagepath',
      'pagesymb','markedcopy_url',       'pagesymb']);
      'markedcopy_title']);  
     if ($env{'form.folderpath'}) {      if ($env{'form.folderpath'}) {
  my (@folderpath)=split('&',$env{'form.folderpath'});   my (@folderpath)=split('&',$env{'form.folderpath'});
  $env{'form.foldername'}=&unescape(pop(@folderpath));   $env{'form.foldername'}=&unescape(pop(@folderpath));
Line 2471  sub handler { Line 2494  sub handler {
         $env{'form.folder'}=pop(@pagepath);          $env{'form.folder'}=pop(@pagepath);
         $containertag = '<input type="hidden" name="pagepath" value="" />'.          $containertag = '<input type="hidden" name="pagepath" value="" />'.
     '<input type="hidden" name="pagesymb" value="" />';      '<input type="hidden" name="pagesymb" value="" />';
         $uploadtag = '<input type="hidden" name="pagepath" value="'.$env{'form.pagepath'}.'" />'.          $uploadtag = '<input type="hidden" name="pagepath" value="'.&HTML::Entities::encode($env{'form.pagepath'},'<>&"').'" />'.
     '<input type="hidden" name="pagesymb" value="'.$env{'form.pagesymb'}.'" />';      '<input type="hidden" name="pagesymb" value="'.&HTML::Entities::encode($env{'form.pagesymb'},'<>&"').'" />';
     }      }
     if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) {      if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) {
        $showdoc='/'.$1;         $showdoc='/'.$1;
Line 2634  sub handler { Line 2657  sub handler {
   );    );
 # -----------------------------------------------------------------------------  # -----------------------------------------------------------------------------
     if ($allowed) {      if ($allowed) {
    &update_paste_buffer($coursenum,$coursedom);
        my $dumpbut=&dumpbutton();         my $dumpbut=&dumpbutton();
        my $exportbut=&exportbutton();         my $exportbut=&exportbutton();
        my %lt=&Apache::lonlocal::texthash(         my %lt=&Apache::lonlocal::texthash(
Line 2653  sub handler { Line 2677  sub handler {
        }         }
        unless ($env{'form.pagepath'}) {         unless ($env{'form.pagepath'}) {
            $containertag = '<input type="hidden" name="folderpath" value="" />';             $containertag = '<input type="hidden" name="folderpath" value="" />';
            $uploadtag = '<input type="hidden" name="folderpath" value="'.$folderpath.'" />';             $uploadtag = '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($folderpath,'<>&"').'" />';
        }         }
   
        $r->print(<<ENDCOURSEVERIFY);         $r->print(<<ENDCOURSEVERIFY);
Line 2661  sub handler { Line 2685  sub handler {
 <input type="hidden" name="title" />  <input type="hidden" name="title" />
 <input type="hidden" name="cmd" />  <input type="hidden" name="cmd" />
 <input type="hidden" name="markcopy" />  <input type="hidden" name="markcopy" />
   <input type="hidden" name="copyfolder" />
 $containertag  $containertag
 </form>  </form>
 <form name="simpleedit" method="post" action="/adm/coursedocs">  <form name="simpleedit" method="post" action="/adm/coursedocs">
Line 2762  $help{'Importing_LON-CAPA_Resource'} Line 2787  $help{'Importing_LON-CAPA_Resource'}
 <p>  <p>
 <hr />  <hr />
 $lt{'copm'}<br />  $lt{'copm'}<br />
 <input type="text" size="40" name="importmap"><br />  <input type="text" size="40" name="importmap" /><br />
 <nobr><input type=button   <nobr><input type=button 
 onClick="javascript:openbrowser('simpleeditdefault','importmap','sequence,page','')"  onClick="javascript:openbrowser('simpleeditdefault','importmap','sequence,page','')"
 value="$lt{'selm'}"> <input type="submit" name="loadmap" value="$lt{'load'}">  value="$lt{'selm'}" /> <input type="submit" name="loadmap" value="$lt{'load'}" />
 $help{'Load_Map'}</nobr>  $help{'Load_Map'}</nobr>
 </p>  </p>
 </form>  </form>
Line 2788  value="$lt{'extr'}" /> $help{'Adding_Ext Line 2813  value="$lt{'extr'}" /> $help{'Adding_Ext
 <br /><form action="/adm/imsimportdocs" method="post" name="ims">  <br /><form action="/adm/imsimportdocs" method="post" name="ims">
 <input type="hidden" name="folder" value="$folder" />  <input type="hidden" name="folder" value="$folder" />
 <input name="imsimport" type="button" value="$lt{'imsf'}" onClick="javascript:makeims();" />  <input name="imsimport" type="button" value="$lt{'imsf'}" onClick="javascript:makeims();" />
 </nobr>  
 </form>  </form>
 ENDFORM  ENDFORM
        }         }
        $r->print('</td><td bgcolor="#DDDDDD">');         $r->print('</td><td bgcolor="#DDDDDD">');
        unless ($env{'form.pagepath'}) {         unless ($env{'form.pagepath'}) {
      my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"');
            $r->print(<<ENDFORM);             $r->print(<<ENDFORM);
 <br /><form action="/adm/coursedocs" method="post" name="newfolder">  <br /><form action="/adm/coursedocs" method="post" name="newfolder">
 <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$path" />
 <input type="hidden" name="importdetail" value="" />  <input type="hidden" name="importdetail" value="" />
 <nobr>  <nobr>
 <input name="newfolder" type="button"  <input name="newfolder" type="button"
Line 2805  value="$lt{'newf'}" />$help{'Adding_Fold Line 2830  value="$lt{'newf'}" />$help{'Adding_Fold
 </nobr>  </nobr>
 </form>  </form>
 <br /><form action="/adm/coursedocs" method="post" name="newpage">  <br /><form action="/adm/coursedocs" method="post" name="newpage">
 <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$path" />
 <input type="hidden" name="importdetail" value="" />  <input type="hidden" name="importdetail" value="" />
 <nobr>  <nobr>
 <input name="newpage" type="button"  <input name="newpage" type="button"
Line 2942  ENDBLOCK Line 2967  ENDBLOCK
        }         }
        &editor($r,$coursenum,$coursedom,$folder,$allowed);         &editor($r,$coursenum,$coursedom,$folder,$allowed);
        if ($allowed) {         if ($allowed) {
        my $folderseq=     my $folderseq=
                   '/uploaded/'.$coursedom.'/'.$coursenum.'/supplemental_'.time.         '/uploaded/'.$coursedom.'/'.$coursenum.'/supplemental_'.time.
                      '.sequence';         '.sequence';
   
           $r->print(<<ENDSUPFORM);     my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"');
      $r->print(<<ENDSUPFORM);
 <table cellspacing=4 cellpadding=4><tr>  <table cellspacing=4 cellpadding=4><tr>
 <th bgcolor="#DDDDDD">$lt{'upls'}</th>  <th bgcolor="#DDDDDD">$lt{'upls'}</th>
 <th bgcolor="#DDDDDD">$lt{'spec'}</th>  <th bgcolor="#DDDDDD">$lt{'spec'}</th>
Line 2966  $lt{'comment'}:<br /> Line 2992  $lt{'comment'}:<br />
 <textarea cols=50 rows=4 name='comment'>  <textarea cols=50 rows=4 name='comment'>
 </textarea>  </textarea>
 <br />  <br />
 <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$path" />
 <input type="hidden" name="cmd" value="upload_supplemental">  <input type="hidden" name="cmd" value="upload_supplemental">
 <nobr>  <nobr>
 <input type="submit" value="$lt{'upld'}">  <input type="submit" value="$lt{'upld'}">
Line 2976  $lt{'comment'}:<br /> Line 3002  $lt{'comment'}:<br />
 </td>  </td>
 <td bgcolor="#DDDDDD">  <td bgcolor="#DDDDDD">
 <form action="/adm/coursedocs" method="post" name="supnewfolder">  <form action="/adm/coursedocs" method="post" name="supnewfolder">
 <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$path" />
 <input type="hidden" name="importdetail" value="" />  <input type="hidden" name="importdetail" value="" />
 <nobr>  <nobr>
 <input name="newfolder" type="button"  <input name="newfolder" type="button"
Line 2985  value="$lt{'newf'}" /> $help{'Adding_Fol Line 3011  value="$lt{'newf'}" /> $help{'Adding_Fol
 </nobr>  </nobr>
 </form>  </form>
 <br /><form action="/adm/coursedocs" method="post" name="supnewext">  <br /><form action="/adm/coursedocs" method="post" name="supnewext">
 <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$path" />
 <input type="hidden" name="importdetail" value="" />  <input type="hidden" name="importdetail" value="" />
 <nobr>  <nobr>
 <input name="newext" type="button"   <input name="newext" type="button" 
Line 2994  value="$lt{'extr'}" /> $help{'Adding_Ext Line 3020  value="$lt{'extr'}" /> $help{'Adding_Ext
 </nobr>  </nobr>
 </form>  </form>
 <br /><form action="/adm/coursedocs" method="post" name="supnewsyl">  <br /><form action="/adm/coursedocs" method="post" name="supnewsyl">
 <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$path" />
 <input type="hidden" name="importdetail"   <input type="hidden" name="importdetail" 
 value="Syllabus=/public/$coursedom/$coursenum/syllabus" />  value="Syllabus=/public/$coursedom/$coursenum/syllabus" />
 <nobr>  <nobr>
Line 3003  $help{'Syllabus'} Line 3029  $help{'Syllabus'}
 </nobr>  </nobr>
 </form>  </form>
 <br /><form action="/adm/coursedocs" method="post" name="subnewaboutme">  <br /><form action="/adm/coursedocs" method="post" name="subnewaboutme">
 <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" />  <input type="hidden" name="folderpath" value="$path" />
 <input type="hidden" name="importdetail"   <input type="hidden" name="importdetail" 
 value="$plainname=/adm/$udom/$uname/aboutme" />  value="$plainname=/adm/$udom/$uname/aboutme" />
 <nobr>  <nobr>
Line 3145  function finishpick() { Line 3171  function finishpick() {
 function changename(folderpath,index,oldtitle,container,pagesymb) {  function changename(folderpath,index,oldtitle,container,pagesymb) {
     var title=prompt('New Title',oldtitle);      var title=prompt('New Title',oldtitle);
     if (title) {      if (title) {
    this.document.forms.renameform.markcopy.value=-1;
  this.document.forms.renameform.title.value=title;   this.document.forms.renameform.title.value=title;
  this.document.forms.renameform.cmd.value='rename_'+index;   this.document.forms.renameform.cmd.value='rename_'+index;
         if (container == 'sequence') {          if (container == 'sequence') {
Line 3160  function changename(folderpath,index,old Line 3187  function changename(folderpath,index,old
   
 function removeres(folderpath,index,oldtitle,container,pagesymb) {  function removeres(folderpath,index,oldtitle,container,pagesymb) {
     if (confirm('WARNING: Removing a resource makes associated grades and scores inaccessible!\\nRemove "'+oldtitle+'"?')) {      if (confirm('WARNING: Removing a resource makes associated grades and scores inaccessible!\\nRemove "'+oldtitle+'"?')) {
    this.document.forms.renameform.markcopy.value=-1;
  this.document.forms.renameform.cmd.value='del_'+index;   this.document.forms.renameform.cmd.value='del_'+index;
         if (container == 'sequence') {          if (container == 'sequence') {
             this.document.forms.renameform.folderpath.value=folderpath;              this.document.forms.renameform.folderpath.value=folderpath;
Line 3172  function removeres(folderpath,index,oldt Line 3200  function removeres(folderpath,index,oldt
     }      }
 }  }
   
 function cutres(folderpath,index,oldtitle,container,pagesymb) {  function cutres(folderpath,index,oldtitle,container,pagesymb,folder) {
     if (confirm('WARNING: Cutting a resource makes associated grades and scores inaccessible!\\nGrades remain inaccessible if resource is pasted into another folder.\\nCut "'+oldtitle+'"?')) {      if (confirm('WARNING: Cutting a resource makes associated grades and scores inaccessible!\\nGrades remain inaccessible if resource is pasted into another folder.\\nCut "'+oldtitle+'"?')) {
  this.document.forms.renameform.cmd.value='cut_'+index;   this.document.forms.renameform.cmd.value='cut_'+index;
  this.document.forms.renameform.markcopy.value=index;   this.document.forms.renameform.markcopy.value=index;
    this.document.forms.renameform.copyfolder.value=folder+'.'+container;
         if (container == 'sequence') {          if (container == 'sequence') {
             this.document.forms.renameform.folderpath.value=folderpath;              this.document.forms.renameform.folderpath.value=folderpath;
         }          }
Line 3187  function cutres(folderpath,index,oldtitl Line 3216  function cutres(folderpath,index,oldtitl
     }      }
 }  }
   
 function markcopy(folderpath,index,oldtitle,container,pagesymb) {  function markcopy(folderpath,index,oldtitle,container,pagesymb,folder) {
     this.document.forms.renameform.markcopy.value=index;      this.document.forms.renameform.markcopy.value=index;
       this.document.forms.renameform.copyfolder.value=folder+'.'+container;
     if (container == 'sequence') {      if (container == 'sequence') {
  this.document.forms.renameform.folderpath.value=folderpath;   this.document.forms.renameform.folderpath.value=folderpath;
     }      }

Removed from v.1.273  
changed lines
  Added in v.1.282


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