Diff for /loncom/interface/londocs.pm between versions 1.362 and 1.378

version 1.362, 2009/04/07 20:12:55 version 1.378, 2009/07/10 19:48:51
Line 72  sub storemap { Line 72  sub storemap {
       &LONCAPA::map::storemap('/uploaded/'.$coursedom.'/'.$coursenum.'/'.        &LONCAPA::map::storemap('/uploaded/'.$coursedom.'/'.$coursenum.'/'.
       $map,1);        $map,1);
     if ($errtext) { return ($errtext,2); }      if ($errtext) { return ($errtext,2); }
       
     $hadchanges=1;      $hadchanges=1;
     return ($errtext,0);      return ($errtext,0);
 }  }
Line 142  sub dumpcourse { Line 142  sub dumpcourse {
     my ($r) = @_;      my ($r) = @_;
     my $type = &Apache::loncommon::course_type();      my $type = &Apache::loncommon::course_type();
     $r->print(&Apache::loncommon::start_page('Dump '.$type.' DOCS to Construction Space').      $r->print(&Apache::loncommon::start_page('Dump '.$type.' DOCS to Construction Space').
       '<form name="dumpdoc" method="post">');        '<form name="dumpdoc" action="" method="post">');
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Dump '.$type.' DOCS to Construction Space'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Dump '.$type.' DOCS to Construction Space'));
     my ($home,$other,%outhash)=&authorhosts();      my ($home,$other,%outhash)=&authorhosts();
     unless ($home) { return ''; }      unless ($home) { return ''; }
Line 262  sub dumpcourse { Line 262  sub dumpcourse {
   
 sub exportbutton {  sub exportbutton {
     my $type = &Apache::loncommon::course_type();      my $type = &Apache::loncommon::course_type();
     return '<input type="submit" name="exportcourse" value="'.      return '<input type="submit" name="exportcourse"'
             &mt('Export '.$type.' to IMS').'" />'.            .' value="'.&mt('IMS Export').'"'
             .' title="'.&mt('Export '.$type.' to IMS Package').'" />'.
     &Apache::loncommon::help_open_topic('Docs_Export_Course_Docs').'<br />';      &Apache::loncommon::help_open_topic('Docs_Export_Course_Docs').'<br />';
 }  }
   
Line 277  sub exportcourse { Line 278  sub exportcourse {
     my $numdisc = keys(%discussiontime);      my $numdisc = keys(%discussiontime);
     my $navmap = Apache::lonnavmaps::navmap->new();      my $navmap = Apache::lonnavmaps::navmap->new();
     if (!defined($navmap)) {      if (!defined($navmap)) {
         $r->print(&Apache::loncommon::start_page('Export '.lc($type).' to IMS content package').          $r->print(&Apache::loncommon::start_page('Export '.$type.' to IMS Package').
                   '<h2>IMS Export Failed</h2>'.                    '<h2>'.&mt('IMS Export Failed').'</h2>'.
                   '<div class="LC_error">'.                    '<div class="LC_error">'.
                   &mt('Unable to retrieve information about course contents').                    &mt('Unable to retrieve information about course contents').
                   '</div><a href="/adm/coursedocs">'.&mt('Return to Course Editor').'</a>');                    '</div><a href="/adm/coursedocs">'.&mt('Return to Course Editor').'</a>');
Line 298  sub exportcourse { Line 299  sub exportcourse {
         my @exportitems = &Apache::loncommon::get_env_multiple('form.archive');          my @exportitems = &Apache::loncommon::get_env_multiple('form.archive');
         my @discussions = &Apache::loncommon::get_env_multiple('form.discussion');          my @discussions = &Apache::loncommon::get_env_multiple('form.discussion');
         if (@exportitems == 0 && @discussions == 0) {          if (@exportitems == 0 && @discussions == 0) {
             $outcome = '<br />As you did not select any content items or discussions for export, an IMS package has not been created.  Please <a href="javascript:history.go(-1)">go back</a> to select either content items or discussions for export';              $outcome = 
                   '<p class="LC_warning">'
                  .&mt('As you did not select any content items or discussions'
                      .' for export, an IMS package has not been created.')
                  .'</p>'
                  .'<p>'
                  .&mt('Please [_1]go back[_2] to select either content items'
                      .' or discussions for export.'
                          ,'<a href="javascript:history.go(-1)">'
                          ,'</a>')
                  .'</p>';
         } else {          } else {
             my $now = time;              my $now = time;
             my %symbs;              my %symbs;
Line 321  sub exportcourse { Line 332  sub exportcourse {
                 open(OUTPUT, "zip -r $imszip *  2> /dev/null |");                  open(OUTPUT, "zip -r $imszip *  2> /dev/null |");
                 close(OUTPUT);                  close(OUTPUT);
                 chdir $cwd;                  chdir $cwd;
                 $outcome .= &mt('Download the zip file from <a href="[_1]">IMS '.lc($type).' archive</a><br />',$imszipfile,);  
                 if ($copyresult) {                  if ($copyresult) {
                     $outcome .= &mt('The following errors occurred during export - [_1]',$copyresult);                      $outcome .= '<p class="LC_error">'
                                  .&mt('The following errors occurred during export - [_1]'
                                      ,$copyresult)
                                  .'</p>';
                 }                  }
                   $outcome .= '<p>'
                              .&mt('[_1]Your IMS package[_2] is ready for download.'
                                  ,'<a href="'.$imszipfile.'">','</a>')
                              .'</p>';
             } else {              } else {
                 $outcome = '<br />'.&mt('Unfortunately you will not be able to retrieve an IMS archive of this posts at this time, because there was a problem creating a manifest file.').'<br />';                  $outcome = '<p class="LC_error">'
                             .&mt('Unfortunately you will not be able to retrieve'
                                 .' an IMS archive of this posts at this time,'
                                 .' because there was a problem creating a'
                                 .' manifest file.')
                             .'</p>'
                             .'<p><a href="javascript:history.go(-1)">'
                             .&mt('Go Back')
                             .'</a></p>';
             }              }
         }          }
         $r->print(&Apache::loncommon::start_page('Export '.lc($type).' to IMS content package'));          $r->print(&Apache::loncommon::start_page('Export '.$type.' to IMS Package'));
  $r->print(&Apache::lonhtmlcommon::breadcrumbs('Export '.lc($type).' to IMS content package'));   $r->print(&Apache::lonhtmlcommon::breadcrumbs('IMS Export'));
         $r->print($outcome);          $r->print($outcome);
         $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
     } else {      } else {
         my $display;          my $display;
         $display = '<form name="exportdoc" method="post">'."\n";          $display = '<form name="exportdoc" action="" method="post">'."\n";
         $display .= &mt('Choose which items you wish to export from your '.$type.'.<br /><br />');          $display .= '<p>'
         $display .= '<table border="0" cellspacing="0" cellpadding="3">'.                     .&mt('Choose which items you wish to export from your '.$type.'.')
                     '<tr><td><fieldset><legend>&nbsp;<b>Content items</b></legend>'.                     .'</p>';
                     '<input type="button" value="check all" '.          $display .= '<div class="LC_columnSection"><fieldset>'.
                       '<legend>'.&mt('Content items').'</legend>'.
                       '<input type="button" value="'.&mt('check all').'" '.
                     'onclick="javascript:checkAll(document.exportdoc.archive)" />'.                      'onclick="javascript:checkAll(document.exportdoc.archive)" />'.
                     '&nbsp;&nbsp;<input type="button" value="uncheck all"'.                      '&nbsp;&nbsp;<input type="button" value="'.&mt('uncheck all').'"'.
                     ' onclick="javascript:uncheckAll(document.exportdoc.archive)" /></fieldset></td>'.                      ' onclick="javascript:uncheckAll(document.exportdoc.archive)" /></fieldset>'.
                     '<td>&nbsp;</td><td>&nbsp;</td>'.                      '<fieldset>'.
                     '<td align="right"><fieldset><legend>&nbsp;<b>Discussion posts'.                      '<legend>'.&mt('Discussion posts').'</legend>'.
                     '</b></legend><input type="button" value="check all"'.                      '<input type="button" value="'.&mt('check all').'"'.
                     ' onclick="javascript:checkAll(document.exportdoc.discussion)" />'.                      ' onclick="javascript:checkAll(document.exportdoc.discussion)" />'.
                     '&nbsp;&nbsp;<input type="button" value="uncheck all"'.                      '&nbsp;&nbsp;<input type="button" value="'.&mt('uncheck all').'"'.
                     ' onclick="javascript:uncheckAll(document.exportdoc.discussion)" /></fieldset></td>'.                      ' onclick="javascript:uncheckAll(document.exportdoc.discussion)" />'.
                     '</tr></table>';                      '</fieldset></div>';
         my $curRes;          my $curRes;
         my $depth = 0;          my $depth = 0;
         my $count = 0;          my $count = 0;
Line 358  sub exportcourse { Line 385  sub exportcourse {
         my %parent = ();          my %parent = ();
         my %children = ();          my %children = ();
         my $lastcontainer = $startcount;          my $lastcontainer = $startcount;
         my @bgcolors = ('#F6F6F6','#FFFFFF');          $display .= &Apache::loncommon::start_data_table()
         $display .= '<table cellspacing="0"><tr>'.                     .&Apache::loncommon::start_data_table_header_row()
             '<td><b>Export content item?<br /></b></td><td>&nbsp;</td><td align="right">'."\n";                     .'<th>'.&mt('Export content item?').'</th>'
                      .'<th>';
         if ($numdisc > 0) {          if ($numdisc > 0) {
             $display.='<b>Export&nbsp;discussion posts?</b>'."\n";              $display .= &mt('Export discussion posts?');
           } else {
                $display .= '&nbsp;';
         }          }
         $display.='&nbsp;</td></tr>';          $display .= '</th>'
                      .&Apache::loncommon::end_data_table_header_row();
         while ($curRes = $it->next()) {          while ($curRes = $it->next()) {
             if (ref($curRes)) {              if (ref($curRes)) {
                 $count ++;                  $count ++;
Line 385  sub exportcourse { Line 416  sub exportcourse {
                         $ressymb = 'bulletin___'.$3.'___adm/wrapper/adm/'.$1.'/'.$2.'/'.$3.'/bulletinboard';                          $ressymb = 'bulletin___'.$3.'___adm/wrapper/adm/'.$1.'/'.$2.'/'.$3.'/bulletinboard';
                     }                      }
                 }                  }
                 my $color = $count%2;                  $display .= &Apache::loncommon::start_data_table_row()
                 $display .='<tr bgcolor='.$bgcolors[$color].'><td>'."\n".                             .'<td>'."\n"
                     '<input type="checkbox" name="archive" value="'.$count.'" ';                             .'<input type="checkbox" name="archive" value="'.$count.'" ';
                 if (($curRes->is_sequence()) || ($curRes->is_page())) {                  if (($curRes->is_sequence()) || ($curRes->is_page())) {
                     my $checkitem = $count + $boards + $startcount;                      my $checkitem = $count + $boards + $startcount;
                     $display .= 'onClick="javascript:propagateCheck('."'$checkitem'".')"';                      $display .= 'onclick="javascript:propagateCheck('."'$checkitem'".')"';
                 }                  }
                 $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" class="LC_docs_spacer" /><img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" />'."\n";                      $display .= '<img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" alt="" />'
                                  .'<img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" alt="" />'."\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" alt="" />&nbsp;'."\n";
                     $lastcontainer = $count + $startcount + $boards;                      $lastcontainer = $count + $startcount + $boards;
                 } elsif ($curRes->is_page()) {                  } elsif ($curRes->is_page()) {
                     $display .= '<img src="/adm/lonIcons/navmap.page.open.gif">&nbsp;'."\n";                      $display .= '<img src="/adm/lonIcons/navmap.page.open.gif" alt="" />&nbsp;'."\n";
                     $lastcontainer = $count + $startcount + $boards;                      $lastcontainer = $count + $startcount + $boards;
                 }                  }
                 my $currelem = $count+$boards+$startcount;                  my $currelem = $count+$boards+$startcount;
                 $children{$parent{$depth}} .= $currelem.':';                  $children{$parent{$depth}} .= $currelem.':';
                 $display .= '&nbsp;'.$curRes->title().'</td>';                  $display .= '&nbsp;'.$curRes->title().'</td>'."\n";
   
                   # Existing discussion posts?
                 if ($discussiontime{$ressymb} > 0) {                  if ($discussiontime{$ressymb} > 0) {
                     $boards ++;                      $boards ++;
                     $currelem = $count+$boards+$startcount;                      $currelem = $count+$boards+$startcount;
                     $display .= '<td>&nbsp;</td><td align="right"><input type="checkbox" name="discussion" value="'.$count.'" />&nbsp;</td>'."\n";                      $display .= '<td align="right">'
                                  .'<input type="checkbox" name="discussion" value="'.$count.'" />'
                                  .'</td>'."\n";
                 } else {                  } else {
                     $display .= '<td colspan="2">&nbsp;</td>'."\n";                      $display .= '<td>&nbsp;</td>'."\n";
                 }                  }
                   $display .= &Apache::loncommon::end_data_table_row();
             }              }
         }          }
           $display .= &Apache::loncommon::end_data_table();
         my $scripttag = qq|          my $scripttag = qq|
 <script>  <script type="text/javascript">
   // <![CDATA[
 function checkAll(field) {  function checkAll(field) {
     if (field.length > 0) {      if (field.length > 0) {
         for (i = 0; i < field.length; i++) {          for (i = 0; i < field.length; i++) {
Line 427  function checkAll(field) { Line 465  function checkAll(field) {
         field.checked = true          field.checked = true
     }      }
 }  }
                                                                                   
 function uncheckAll(field) {  function uncheckAll(field) {
     if (field.length > 0) {      if (field.length > 0) {
         for (i = 0; i < field.length; i++) {          for (i = 0; i < field.length; i++) {
Line 442  function propagateCheck(item) { Line 480  function propagateCheck(item) {
     if (document.exportdoc.elements[item].checked == true) {      if (document.exportdoc.elements[item].checked == true) {
         containerCheck(item)          containerCheck(item)
     }      }
 }   }
   
 function containerCheck(item) {  function containerCheck(item) {
     document.exportdoc.elements[item].checked = true      document.exportdoc.elements[item].checked = true
Line 465  function containerCheck(item) { Line 503  function containerCheck(item) {
         for (var j=0; j<parents[item].length; j++) {          for (var j=0; j<parents[item].length; j++) {
             containerCheck(parents[item][j])              containerCheck(parents[item][j])
         }          }
      }          }
 }  }
   // ]]>
 </script>  </script>
         |;          |;
  $r->print(&Apache::loncommon::start_page('Export '.lc($type).' to IMS content package',   $r->print(&Apache::loncommon::start_page('Export '.$type.' to IMS Package',
  $scripttag));   $scripttag));
  $r->print(&Apache::lonhtmlcommon::breadcrumbs('Export '.lc($type).' to IMS content package'));   $r->print(&Apache::lonhtmlcommon::breadcrumbs('IMS Export'));
  $r->print($display.'</table>'.   $r->print($display.
                   '<p><input type="hidden" name="finishexport" value="1" />'.                    '<p><input type="hidden" name="finishexport" value="1" />'.
                   '<input type="submit" name="exportcourse" value="'.                    '<input type="submit" name="exportcourse" value="'.
                   &mt('Export '.$type.' DOCS').'" /></p></form>');                    &mt('Export').'" /></p></form>');
     }      }
 }  }
   
Line 859  sub extract_media { Line 897  sub extract_media {
                 $repstatus = 'ok';                  $repstatus = 'ok';
             }              }
         } elsif ($caller eq 'uploaded') {          } elsif ($caller eq 'uploaded') {
               
             $repstatus = &Apache::lonnet::getuploaded('GET',$embed_url,$cdom,$cnum,\$embed_content,$rtncode);              $repstatus = &Apache::lonnet::getuploaded('GET',$embed_url,$cdom,$cnum,\$embed_content,$rtncode);
         }          }
         if ($repstatus eq 'ok') {          if ($repstatus eq 'ok') {
Line 924  sub group_import { Line 962  sub group_import {
         if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$})          if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$})
      && ($caller eq 'londocs')       && ($caller eq 'londocs')
      && (!&Apache::lonnet::stat_file($url))) {       && (!&Apache::lonnet::stat_file($url))) {
       
             my $errtext = '';              my $errtext = '';
             my $fatal = 0;              my $fatal = 0;
             my $newmapstr = '<map>'."\n".              my $newmapstr = '<map>'."\n".
Line 1004  sub breadcrumbs { Line 1042  sub breadcrumbs {
     &Apache::lonhtmlcommon::add_breadcrumb(      &Apache::lonhtmlcommon::add_breadcrumb(
       {'href'=>$url.$cpinfo,        {'href'=>$url.$cpinfo,
        'title'=>$name,         'title'=>$name,
        'text'=>'<font size="+1">'.         'text'=>$name,
    $name.'</font>',  
        'no_mt'=>1,         'no_mt'=>1,
        });         });
  $plain.=$name.' &gt; ';   $plain.=$name.' &gt; ';
Line 1176  sub docs_change_log { Line 1213  sub docs_change_log {
     if ($oldname ne '' && $oldname ne $newname) {      if ($oldname ne '' && $oldname ne $newname) {
  $r->print(&LONCAPA::map::qtescape($newname));   $r->print(&LONCAPA::map::qtescape($newname));
     }      }
  }           }
  $r->print('<ul>');   $r->print('<ul>');
  for (my $idx=0;$idx<=$docslog{$id}{'logentry'}{'maxidx'};$idx++) {   for (my $idx=0;$idx<=$docslog{$id}{'logentry'}{'maxidx'};$idx++) {
             if ($docslog{$id}{'logentry'}{'after_order_res_'.$idx}) {              if ($docslog{$id}{'logentry'}{'after_order_res_'.$idx}) {
Line 1214  sub update_paste_buffer { Line 1251  sub update_paste_buffer {
   
     my ($errtext,$fatal) = &mapread($coursenum,$coursedom,      my ($errtext,$fatal) = &mapread($coursenum,$coursedom,
     $env{'form.copyfolder'});      $env{'form.copyfolder'});
       
     return if ($fatal);      return if ($fatal);
   
 # Mark for copying  # Mark for copying
Line 1402  sub update_parameter { Line 1439  sub update_parameter {
  &remember_parms($idx,$which,'set',$value);   &remember_parms($idx,$which,'set',$value);
     } else {      } else {
  &LONCAPA::map::delparameter($idx,'parameter_'.$which);   &LONCAPA::map::delparameter($idx,'parameter_'.$which);
   
  &remember_parms($idx,$which,'del');   &remember_parms($idx,$which,'del');
     }      }
     return 1;      return 1;
Line 1470  sub editor { Line 1507  sub editor {
         $LONCAPA::map::order[0]=$idx;          $LONCAPA::map::order[0]=$idx;
         $LONCAPA::map::resources[$idx]='';          $LONCAPA::map::resources[$idx]='';
     }      }
       
     my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order)=      my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order)=
  &breadcrumbs($folder,$allowed,$type);   &breadcrumbs($folder,$allowed,$type);
     $r->print($breadcrumbtrail);      $r->print($breadcrumbtrail);
       
 # ------------------------------------------------------------ Process commands  # ------------------------------------------------------------ Process commands
   
 # ---------------- if they are for this folder and user allowed to make changes  # ---------------- if they are for this folder and user allowed to make changes
Line 1495  sub editor { Line 1532  sub editor {
     ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container);      ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container);
     return $errtext if ($fatal);      return $errtext if ($fatal);
  }   }
       
  if ($env{'form.pastemarked'}) {   if ($env{'form.pastemarked'}) {
             my $paste_res =              my $paste_res =
                 &do_paste_from_buffer($coursenum,$coursedom,$folder);                  &do_paste_from_buffer($coursenum,$coursedom,$folder);
Line 1541  sub editor { Line 1578  sub editor {
  return $errtext if ($fatal);   return $errtext if ($fatal);
     } else {      } else {
  $r->print('<p><span class="LC_error">'.&mt('No map selected.').'</span></p>');   $r->print('<p><span class="LC_error">'.&mt('No map selected.').'</span></p>');
   
     }      }
  }   }
  &log_differences($plain);   &log_differences($plain);
Line 1556  sub editor { Line 1593  sub editor {
   ($ishidden?'<li>'.&mt('contents hidden').'</li>':'').    ($ishidden?'<li>'.&mt('contents hidden').'</li>':'').
   ($isencrypted?'<li>'.&mt('URLs hidden').'</li>':'').    ($isencrypted?'<li>'.&mt('URLs hidden').'</li>':'').
   '</ul></p>');    '</ul></p>');
     }                                                                                                           }
     if ($randompick>=0) {      if ($randompick>=0) {
  $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>');
     }      }
Line 1715  sub parse_supplemental_title { Line 1752  sub parse_supplemental_title {
     }      }
     if (wantarray) {      if (wantarray) {
  return ($title,$foldertitle,$renametitle);   return ($title,$foldertitle,$renametitle);
     }       }
     return $title;      return $title;
 }  }
   
Line 1736  sub entryline { Line 1773  sub entryline {
     }      }
   
     my $orderidx=$LONCAPA::map::order[$index];      my $orderidx=$LONCAPA::map::order[$index];
       
   
     $renametitle=~s/\\/\\\\/g;      $renametitle=~s/\\/\\\\/g;
     $renametitle=~s/\&quot\;/\\\"/g;      $renametitle=~s/\&quot\;/\\\"/g;
Line 1772  sub entryline { Line 1809  sub entryline {
      ne '')) {       ne '')) {
     $selectbox=      $selectbox=
  '<input type="hidden" name="currentpos" value="'.$incindex.'" />'.   '<input type="hidden" name="currentpos" value="'.$incindex.'" />'.
  '<select name="newpos" onChange="this.form.submit()">';   '<select name="newpos" onchange="this.form.submit()">';
     for (my $i=1;$i<=$#LONCAPA::map::order+1;$i++) {      for (my $i=1;$i<=$#LONCAPA::map::order+1;$i++) {
  if ($i==$incindex) {   if ($i==$incindex) {
     $selectbox.='<option value="" selected="selected">('.$i.')</option>';      $selectbox.='<option value="" selected="selected">('.$i.')</option>';
Line 1811  sub entryline { Line 1848  sub entryline {
         }          }
         my $copylink='&nbsp;';          my $copylink='&nbsp;';
         my $cutlink='&nbsp;';          my $cutlink='&nbsp;';
   
  my $skip_confirm = 0;   my $skip_confirm = 0;
  if ( $folder =~ /^supplemental/   if ( $folder =~ /^supplemental/
      || ($url =~ m{( /smppg$       || ($url =~ m{( /smppg$
Line 1897  END Line 1934  END
     &Apache::lonnet::allowuploaded('/adm/coursedoc',$url);      &Apache::lonnet::allowuploaded('/adm/coursedoc',$url);
  }   }
     }      }
       
     my $orig_url = $url;      my $orig_url = $url;
     $orig_url=~s{http(&colon;|:)//https(&colon;|:)//}{https$2//};      $orig_url=~s{http(&colon;|:)//https(&colon;|:)//}{https$2//};
     my $external = ($url=~s{^http(|s)(&colon;|:)//}{/adm/wrapper/ext/});      my $external = ($url=~s{^http(|s)(&colon;|:)//}{/adm/wrapper/ext/});
Line 1932  END Line 1969  END
         }          }
  if ($container eq 'page') {   if ($container eq 'page') {
     my $symb=$env{'form.pagesymb'};      my $symb=$env{'form.pagesymb'};
           
     $url=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]);      $url=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]);
     $url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb);      $url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb);
  }   }
Line 1954  END Line 1991  END
                                               'parameter_randomorder'))[0]=~/^yes$/i);                                                'parameter_randomorder'))[0]=~/^yes$/i);
  $url.='folderpath='.&escape($folderpath).$cpinfo;   $url.='folderpath='.&escape($folderpath).$cpinfo;
  $parameterset='<label>'.&mt('Randomly Pick: ').   $parameterset='<label>'.&mt('Randomly Pick: ').
     '<input type="text" size="4" onChange="this.form.changeparms.value='."'randompick'".';this.form.submit()" name="randompick_'.$orderidx.'" value="'.      '<input type="text" size="4" onchange="this.form.changeparms.value='."'randompick'".';this.form.submit()" name="randompick_'.$orderidx.'" value="'.
     (&LONCAPA::map::getparameter($orderidx,      (&LONCAPA::map::getparameter($orderidx,
                                               'parameter_randompick'))[0].                                                'parameter_randompick'))[0].
                                               '" />'.                                                '" />'.
Line 1962  END Line 1999  END
     my $ro_set=      my $ro_set=
     ((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':'');      ((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':'');
  $rand_order_text ='   $rand_order_text ='
 <span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" onClick="this.form.changeparms.value=\'randomorder\';this.form.submit()" '.$ro_set.' /> '.&mt('Random Order').' </label></span>';  <span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" onclick="this.form.changeparms.value=\'randomorder\';this.form.submit()" '.$ro_set.' /> '.&mt('Random Order').' </label></span>';
     }      }
     if ($ispage) {      if ($ispage) {
         my $pagename=&escape($pagetitle);          my $pagename=&escape($pagetitle);
Line 2006  END Line 2043  END
  $line.=(<<ENDPARMS);   $line.=(<<ENDPARMS);
   <td class="LC_docs_entry_parameter">    <td class="LC_docs_entry_parameter">
     $form_start      $form_start
     <label><input type="checkbox" name="hiddenresource_$orderidx" onClick="this.form.changeparms.value='hiddenresource';this.form.submit()" $hidtext /> $lt{'hd'}</label>      <label><input type="checkbox" name="hiddenresource_$orderidx" onclick="this.form.changeparms.value='hiddenresource';this.form.submit()" $hidtext /> $lt{'hd'}</label>
     $form_end      $form_end
   </td>    </td>
   <td class="LC_docs_entry_parameter">    <td class="LC_docs_entry_parameter">
     $form_start      $form_start
     <label><input type="checkbox" name="encrypturl_$orderidx" onClick="this.form.changeparms.value='encrypturl';this.form.submit()" $enctext /> $lt{'ec'}</label>      <label><input type="checkbox" name="encrypturl_$orderidx" onclick="this.form.changeparms.value='encrypturl';this.form.submit()" $enctext /> $lt{'ec'}</label>
     $form_end      $form_end
   </td>    </td>
   <td class="LC_docs_entry_parameter">$form_start $rand_order_text $form_end</td>    <td class="LC_docs_entry_parameter">$form_start $rand_order_text $form_end</td>
Line 2045  sub tiehash { Line 2082  sub tiehash {
                 $hashtied=1;                  $hashtied=1;
     }      }
  }   }
     }          }
 }  }
   
 sub untiehash {  sub untiehash {
Line 2094  sub checkonthis { Line 2131  sub checkonthis {
                  if (($errorcount) ||                   if (($errorcount) ||
                      ($warningcount)) {                       ($warningcount)) {
      if ($errorcount) {       if ($errorcount) {
                         $r->print('<img src="/adm/lonMisc/bomb.gif" /><span class="LC_error">'.                          $r->print('<img src="/adm/lonMisc/bomb.gif" alt="'.&mt('bomb').'" /><span class="LC_error">'.
                           &mt('[quant,_1,error]',$errorcount).'</span>');                            &mt('[quant,_1,error]',$errorcount).'</span>');
                      }                       }
      if ($warningcount) {       if ($warningcount) {
Line 2119  sub checkonthis { Line 2156  sub checkonthis {
       unless ($url=~/\$/) {        unless ($url=~/\$/) {
   $r->print('<span class="LC_error">'.&mt('not found').'</b></span>');    $r->print('<span class="LC_error">'.&mt('not found').'</b></span>');
       } else {        } else {
   $r->print('<span class="LC_unknown">'.&mt('unable to verify variable URL').'</span>');    $r->print('<span class="LC_error">'.&mt('unable to verify variable URL').'</span>');
       }        }
           } else {            } else {
              $r->print('<span class="LC_error">'.&mt('access denied').'</span>');               $r->print('<span class="LC_error">'.&mt('access denied').'</span>');
Line 2394  ENDHEADERS Line 2431  ENDHEADERS
     $lastold=$prevvers;      $lastold=$prevvers;
  }   }
     }      }
             #               #
             # Code to figure out how many version entries should go in              # Code to figure out how many version entries should go in
             # each of the four columns              # each of the four columns
             my $entries_per_col = 0;              my $entries_per_col = 0;
Line 2484  sub changewarning { Line 2521  sub changewarning {
  $message='Changes will become active for your current session after [_1], or the next time you log in.';   $message='Changes will become active for your current session after [_1], or the next time you log in.';
     }      }
     $r->print("\n\n".      $r->print("\n\n".
 '<script type="text/javascript">function reinit(tf) { tf.submit();'.$postexec.' }</script>'."\n".  '<script type="text/javascript">'."\n".
   '// <![CDATA['."\n".
   'function reinit(tf) { tf.submit();'.$postexec.' }'."\n".
   '// ]]>'."\n".
   '</script>'."\n".
 '<form name="reinitform" method="post" action="/adm/roles" target="loncapaclient">'.  '<form name="reinitform" method="post" action="/adm/roles" target="loncapaclient">'.
 '<input type="hidden" name="orgurl" value="'.$url.  '<input type="hidden" name="orgurl" value="'.$url.
 '" /><input type="hidden" name="selectrole" value="1" /><h3><span class="LC_warning">'.  '" /><input type="hidden" name="selectrole" value="1" /><p class="LC_warning">'.
 &mt($message,' <input type="hidden" name="'.  &mt($message,' <input type="hidden" name="'.
     $env{'request.role'}.'" value="1" /><input type="button" value="'.      $env{'request.role'}.'" value="1" /><input type="button" value="'.
     &mt('re-initializing '.$course_type).'" onClick="reinit(this.form)" />').      &mt('re-initializing '.$course_type).'" onclick="reinit(this.form)" />').
 $help{'Caching'}.'</span></h3></form>'."\n\n");  $help{'Caching'}.'</p></form>'."\n\n");
 }  }
   
   
Line 2561  sub handler { Line 2602  sub handler {
       &init_breadcrumbs('dumpcourse','Dump '.&Apache::loncommon::course_type().' DOCS to Construction Space');        &init_breadcrumbs('dumpcourse','Dump '.&Apache::loncommon::course_type().' DOCS to Construction Space');
       &dumpcourse($r);        &dumpcourse($r);
   } elsif ($allowed && $env{'form.exportcourse'}) {    } elsif ($allowed && $env{'form.exportcourse'}) {
       &init_breadcrumbs('exportcourse','Export '.&Apache::loncommon::course_type().' to IMS');        &init_breadcrumbs('exportcourse','IMS Export');
       &exportcourse($r);        &exportcourse($r);
   } else {    } else {
 # is this a standard course?  # is this a standard course?
Line 2619  sub handler { Line 2660  sub handler {
        if (($env{'form.folder'}=~/^(?:group|default)_/) ||         if (($env{'form.folder'}=~/^(?:group|default)_/) ||
           ($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) {            ($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) {
            $forcestandard = 1;             $forcestandard = 1;
        }          }
        $forcesupplement=($env{'form.folder'}=~/^supplemental_/);         $forcesupplement=($env{'form.folder'}=~/^supplemental_/);
   
        if ($allowed) {         if ($allowed) {
Line 2647  sub handler { Line 2688  sub handler {
  $script .= &editing_js($udom,$uname);   $script .= &editing_js($udom,$uname);
     }      }
 # -------------------------------------------------------------------- Body tag  # -------------------------------------------------------------------- Body tag
     $script = '<script type="text/javascript">'."\n".$script."\n".'</script>';      $script = '<script type="text/javascript">'."\n"
                 .'// <![CDATA['."\n"
                 .$script."\n"
                 .'// ]]>'."\n"
                 .'</script>'."\n";
     my $brcrum = [{href=>"/adm/createuser",text=>"$type Documents"}];      my $brcrum = [{href=>"/adm/createuser",text=>"$type Documents"}];
     $r->print(&Apache::loncommon::start_page("$type Documents", $script,      $r->print(&Apache::loncommon::start_page("$type Documents", $script,
     {'force_register' => $showdoc,      {'force_register' => $showdoc,
                                      'bread_crumbs' => $brcrum}).                                       'bread_crumbs' => $brcrum}).
       &Apache::loncommon::help_open_menu('','',273,'RAT'));        &Apache::loncommon::help_open_menu('','',273,'RAT'));
     
   my %allfiles = ();    my %allfiles = ();
   my %codebase = ();    my %codebase = ();
   my ($upload_result,$upload_output);    my ($upload_result,$upload_output);
Line 2722  sub handler { Line 2767  sub handler {
                               $attrib_regexp = $attribs{$item}[0];                                $attrib_regexp = $attribs{$item}[0];
                           }                            }
                           if ($content =~ m#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#) {                            if ($content =~ m#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#) {
                           }                             }
                           $content =~ s#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#$1$newname{$item}$2#gi;                            $content =~ s#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#$1$newname{$item}$2#gi;
                       }                        }
                       if (exists($codebase{$item})) {                        if (exists($codebase{$item})) {
Line 2747  sub handler { Line 2792  sub handler {
                 'uplm' => 'Upload a new main '.lc($type).' document',                  'uplm' => 'Upload a new main '.lc($type).' document',
                 'upls' => 'Upload a new supplemental '.lc($type).' document',                  'upls' => 'Upload a new supplemental '.lc($type).' document',
                 'impp' => 'Import a document',                  'impp' => 'Import a document',
                 'pubd' => 'Published Documents',  
  'copm' => 'All documents out of a published map into this folder',   'copm' => 'All documents out of a published map into this folder',
                 'upld' => 'Upload Document',                  'upld' => 'Upload Document',
                 'srch' => 'Search',                  'srch' => 'Search',
Line 2770  sub handler { Line 2814  sub handler {
                 'grpo' => 'Group Portfolio',                  'grpo' => 'Group Portfolio',
                 'rost' => 'Course Roster',                  'rost' => 'Course Roster',
  'abou' => 'Personal Information Page for a User',   'abou' => 'Personal Information Page for a User',
                 'imsf' => 'Import IMS package',                  'imsf' => 'IMS Import',
                   'imsl' => 'Import IMS package',
                 'file' =>  'File',                  'file' =>  'File',
                 '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!',
  'nd' => 'New Document',   'nd' => 'Upload Document',
  'pm' => 'Published Map',   'pm' => 'Published Map',
  'sd' => 'Special Document',   'sd' => 'Special Document',
  'mo' => 'More Options',   'mo' => 'More Options',
  'hao' => 'Hide all Options'  
   );    );
 # -----------------------------------------------------------------------------  # -----------------------------------------------------------------------------
  my $fileupload=(<<FIUP);   my $fileupload=(<<FIUP);
Line 2798  CHBO Line 2842  CHBO
   
  my $fileuploadform=(<<FUFORM);   my $fileuploadform=(<<FUFORM);
  <form name="uploaddocument" action="/adm/coursedocs" method="post" enctype="multipart/form-data">   <form name="uploaddocument" action="/adm/coursedocs" method="post" enctype="multipart/form-data">
    <input type="hidden" name="active" value="aa" />
  $fileupload   $fileupload
  <br />   <br />
  $lt{'title'}:<br />   $lt{'title'}:<br />
Line 2819  FUFORM Line 2864  FUFORM
   
  my $simpleeditdefaultform=(<<SEDFFORM);   my $simpleeditdefaultform=(<<SEDFFORM);
  <form action="/adm/coursedocs" method="post" name="simpleeditdefault">   <form action="/adm/coursedocs" method="post" name="simpleeditdefault">
  $lt{'pubd'}<br />   <input type="hidden" name="active" value="bb" />
  $uploadtag   $uploadtag
  <input type="button" onClick="javascript:groupsearch()" value="$lt{'srch'}" />   <input type="button" onclick="javascript:groupsearch()" value="$lt{'srch'}" />
  <br />   <br />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input type="button" onClick="javascript:groupimport();" value="$lt{'impo'}" />   <input type="button" onclick="javascript:groupimport();" value="$lt{'impo'}" />
  $help{'Importing_LON-CAPA_Resource'}   $help{'Importing_LON-CAPA_Resource'}
  </span>   </span>
  <br />   <br />
  <input type="button" onClick="javascript:groupopen(0,1,1);" value="$lt{'book'}" />   <input type="button" onclick="javascript:groupopen(0,1,1);" value="$lt{'book'}" />
  <hr />   <hr />
  <p>   <p>
  $lt{'copm'}<br />   $lt{'copm'}<br />
  <input type="text" size="40" name="importmap" /><br />   <input type="text" size="40" name="importmap" /><br />
  <span class="LC_nobreak"><input type="button"   <span class="LC_nobreak"><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'}</span>   $help{'Load_Map'}</span>
  </p>   </p>
Line 2846  SEDFFORM Line 2891  SEDFFORM
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newext" type="button" onClick="javascript:makenewext('newext');"   <input name="newext" type="button" onclick="javascript:makenewext('newext');"
  value="$lt{'extr'}" /> $help{'Adding_External_Resource'}   value="$lt{'extr'}" /> $help{'Adding_External_Resource'}
  </span>   </span>
  </form>   </form>
Line 2891  HIDDENFORM Line 2936  HIDDENFORM
     my $activeClass = 1;      my $activeClass = 1;
     my $active = '';      my $active = '';
     $r->print('<ul class="LC_TabContentBigger" id="mainnav">');      $r->print('<ul class="LC_TabContentBigger" id="mainnav">');
     if (($standard) && ($allowed) && (!$forcesupplement) && (($env{'form.folderpath'}=~/^default/) || ($env{'form.pagepath'}))) {      if (($standard) && ($allowed) && (!$forcesupplement) && (($env{'form.folderpath'}=~/^default/) || $env{'form.folderpath'}eq"" || ($env{'form.pagepath'}))) {
         if($activeClass == 1){          if($activeClass == 1){
            $active = 'class="active"';             $active = 'class="active"';
    $activeClass = 0;     $activeClass = 0;
  }   }
     }      }
     $r->print('<li '.$active.'onclick="javascript:showPage(this,\'mainCourseDocuments\',\'mainnav\',\'maincoursedoc\');">'.&mt('Main Course Documents').'</li>');      $r->print('<li '.$active.' onclick="javascript:showPage(this,\'mainCourseDocuments\',\'mainnav\',\'maincoursedoc\');">'.&mt('Main Course Documents').'</li>');
     $active = '';      $active = '';
     if (!$forcestandard || ($env{'form.folderpath'}=~/^supplemental/)) {      if (!$forcestandard || ($env{'form.folderpath'}=~/^supplemental/)) {
         if($activeClass == 1){          if($activeClass == 1){
            $active = 'class="active"';             $active = 'class="active"';
         }          }
     }      }
     $r->print('<li '.$active.'onclick="javascript:showPage(this,\'Supplemental Course Documents\',\'mainnav\',\'maincoursedoc\');">'.&mt('Supplemental Course Documents').'</li>');      $r->print('<li '.$active.' onclick="javascript:showPage(this,\'supplCourseDocuments\',\'mainnav\',\'maincoursedoc\');">'.&mt('Supplemental Course Documents').'</li>');
     $r->print('</ul><div class="LC_ContentBoxSpecial" style="margin:0 0;padding:0 0;"><div id="maincoursedoc" style="margin:0 0;padding:0 0;">');      $r->print('</ul>'
                .'<div class="LC_Box" style="clear:both;margin:0;">'
                .'<div id="maincoursedoc" style="margin:0 0;padding:0 0;">');
 # --------------------------------------------------------- Standard documents  # --------------------------------------------------------- Standard documents
        my $savefolderpath;         my $savefolderpath;
        my $active = 'style="display: none;"';         my $active = 'style="display: none;"';
Line 2913  HIDDENFORM Line 2960  HIDDENFORM
           $active = 'style="display: block;"';            $active = 'style="display: block;"';
        }         }
        $r->print('<div class="LC_ContentBox" id="mainCourseDocuments" '.$active.'>');         $r->print('<div class="LC_ContentBox" id="mainCourseDocuments" '.$active.'>');
         $r->print(&Apache::loncommon::help_open_topic('Docs_Adding_Course_Doc',  
                      &mt('Editing the Table of Contents for your '.$type)));  
        my $folder=$env{'form.folder'};         my $folder=$env{'form.folder'};
        if ($folder eq '' || $folder=~/^supplemental/) {         if ($folder eq '' || $folder=~/^supplemental/) {
            $folder='default';             $folder='default';
Line 2925  HIDDENFORM Line 2970  HIDDENFORM
        }         }
        my $postexec='';         my $postexec='';
        if ($folder eq 'default') {         if ($folder eq 'default') {
    $r->print('<script type="text/javascript">this.window.name="loncapaclient";</script>');             $r->print('<script type="text/javascript">'."\n"
                       .'// <![CDATA['."\n"
                       .'this.window.name="loncapaclient";'."\n"
                       .'// ]]>'."\n"
                       .'</script>'."\n"
          );
        } else {         } else {
            #$postexec='self.close();';             #$postexec='self.close();';
        }         }
Line 2943  HIDDENFORM Line 2993  HIDDENFORM
   
  my $recoverform=(<<RFORM);   my $recoverform=(<<RFORM);
  <form action="/adm/groupsort" method="post" name="recover">   <form action="/adm/groupsort" method="post" name="recover">
  <input type="button" name="recovermap" onClick="javascript:groupopen('$readfile',1,0)" value="$lt{'reco'}" />   <input type="button" name="recovermap" onclick="javascript:groupopen('$readfile',1,0)" value="$lt{'reco'}" />
  </form>   </form>
 RFORM  RFORM
   
  my $imspform=(<<IMSPFORM);   my $imspform=(<<IMSPFORM);
  <form action="/adm/imsimportdocs" method="post" name="ims">   <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'}" title="$lt{imsl}"  onclick="javascript:makeims();" />
  </form>   </form>
 IMSPFORM  IMSPFORM
   
  my $newnavform=(<<NNFORM);   my $newnavform=(<<NNFORM);
  <form action="/adm/coursedocs" method="post" name="newnav">   <form action="/adm/coursedocs" method="post" name="newnav">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail"    <input type="hidden" name="importdetail" 
  value="$lt{'navc'}=/adm/navmaps" />   value="$lt{'navc'}=/adm/navmaps" />
Line 2967  IMSPFORM Line 3018  IMSPFORM
 NNFORM  NNFORM
  my $newsmppageform=(<<NSPFORM);   my $newsmppageform=(<<NSPFORM);
  <form action="/adm/coursedocs" method="post" name="newsmppg">   <form action="/adm/coursedocs" method="post" name="newsmppg">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newsmppg" type="button" value="$lt{'sipa'}"   <input name="newsmppg" type="button" value="$lt{'sipa'}"
  onClick="javascript:makesmppage();" /> $help{'Simple Page'}   onclick="javascript:makesmppage();" /> $help{'Simple Page'}
  </span>   </span>
  </form>   </form>
 NSPFORM  NSPFORM
   
  my $newsmpproblemform=(<<NSPROBFORM);   my $newsmpproblemform=(<<NSPROBFORM);
  <form action="/adm/coursedocs" method="post" name="newsmpproblem">   <form action="/adm/coursedocs" method="post" name="newsmpproblem">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newsmpproblem" type="button" value="$lt{'sipr'}"   <input name="newsmpproblem" type="button" value="$lt{'sipr'}"
  onClick="javascript:makesmpproblem();" />$help{'Simple Problem'}   onclick="javascript:makesmpproblem();" />$help{'Simple Problem'}
  </span>   </span>
  </form>   </form>
   
Line 2990  NSPROBFORM Line 3043  NSPROBFORM
   
  my $newdropboxform=(<<NDBFORM);   my $newdropboxform=(<<NDBFORM);
  <form action="/adm/coursedocs" method="post" name="newdropbox">   <form action="/adm/coursedocs" method="post" name="newdropbox">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newdropbox" type="button" value="$lt{'drbx'}"   <input name="newdropbox" type="button" value="$lt{'drbx'}"
  onClick="javascript:makedropbox();" />   onclick="javascript:makedropbox();" />
  </span>   </span>
  </form>   </form>
 NDBFORM  NDBFORM
   
  my $newexuploadform=(<<NEXUFORM);   my $newexuploadform=(<<NEXUFORM);
  <form action="/adm/coursedocs" method="post" name="newexamupload">   <form action="/adm/coursedocs" method="post" name="newexamupload">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newexamupload" type="button" value="$lt{'scuf'}"   <input name="newexamupload" type="button" value="$lt{'scuf'}"
  onClick="javascript:makeexamupload();" />   onclick="javascript:makeexamupload();" />
  $help{'Score_Upload_Form'}   $help{'Score_Upload_Form'}
  </span>   </span>
  </form>   </form>
Line 3013  NEXUFORM Line 3068  NEXUFORM
   
  my $newbulform=(<<NBFORM);   my $newbulform=(<<NBFORM);
  <form action="/adm/coursedocs" method="post" name="newbul">   <form action="/adm/coursedocs" method="post" name="newbul">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newbulletin" type="button" value="$lt{'bull'}"   <input name="newbulletin" type="button" value="$lt{'bull'}"
  onClick="javascript:makebulboard();" />   onclick="javascript:makebulboard();" />
  $help{'Bulletin Board'}   $help{'Bulletin Board'}
  </span>   </span>
  </form>   </form>
Line 3025  NBFORM Line 3081  NBFORM
   
  my $newaboutmeform=(<<NAMFORM);   my $newaboutmeform=(<<NAMFORM);
  <form action="/adm/coursedocs" method="post" name="newaboutme">   <form action="/adm/coursedocs" method="post" name="newaboutme">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail"    <input type="hidden" name="importdetail" 
  value="$plainname=/adm/$udom/$uname/aboutme" />   value="$plainname=/adm/$udom/$uname/aboutme" />
Line 3037  NAMFORM Line 3094  NAMFORM
   
  my $newaboutsomeoneform=(<<NASOFORM);   my $newaboutsomeoneform=(<<NASOFORM);
  <form action="/adm/coursedocs" method="post" name="newaboutsomeone">   <form action="/adm/coursedocs" method="post" name="newaboutsomeone">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newaboutsomeone" type="button" value="$lt{'abou'}"    <input name="newaboutsomeone" type="button" value="$lt{'abou'}" 
  onClick="javascript:makeabout();" />   onclick="javascript:makeabout();" />
  </span>   </span>
  </form>   </form>
 NASOFORM  NASOFORM
Line 3049  NASOFORM Line 3107  NASOFORM
   
  my $newrosterform=(<<NROSTFORM);   my $newrosterform=(<<NROSTFORM);
  <form action="/adm/coursedocs" method="post" name="newroster">   <form action="/adm/coursedocs" method="post" name="newroster">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail"    <input type="hidden" name="importdetail" 
  value="$lt{'rost'}=/adm/viewclasslist" />   value="$lt{'rost'}=/adm/viewclasslist" />
Line 3069  my $newfolderform; Line 3128  my $newfolderform;
  <form action="/adm/coursedocs" method="post" name="newpage">   <form action="/adm/coursedocs" method="post" name="newpage">
  <input type="hidden" name="folderpath" value="$path" />   <input type="hidden" name="folderpath" value="$path" />
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
    <input type="hidden" name="active" value="cc" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newpage" type="button"   <input name="newpage" type="button"
  onClick="javascript:makenewpage(this.form,'$pageseq');"   onclick="javascript:makenewpage(this.form,'$pageseq');"
  value="$lt{'newp'}" />$help{'Adding_Pages'}   value="$lt{'newp'}" />$help{'Adding_Pages'}
  </span>   </span>
  </form>   </form>
Line 3081  NPFORM Line 3141  NPFORM
  <form action="/adm/coursedocs" method="post" name="newfolder">   <form action="/adm/coursedocs" method="post" name="newfolder">
  <input type="hidden" name="folderpath" value="$path" />   <input type="hidden" name="folderpath" value="$path" />
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
    <input type="hidden" name="active" value="aa" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newfolder" type="button"   <input name="newfolder" type="button"
  onClick="javascript:makenewfolder(this.form,'$folderseq');"   onclick="javascript:makenewfolder(this.form,'$folderseq');"
  value="$lt{'newf'}" />$help{'Adding_Folders'}   value="$lt{'newf'}" />$help{'Adding_Folders'}
  </span>   </span>
  </form>   </form>
Line 3091  NFFORM Line 3152  NFFORM
   
  my $newsylform=(<<NSYLFORM);   my $newsylform=(<<NSYLFORM);
  <form action="/adm/coursedocs" method="post" name="newsyl">   <form action="/adm/coursedocs" method="post" name="newsyl">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail"    <input type="hidden" name="importdetail" 
  value="$lt{'syll'}=/public/$coursedom/$coursenum/syllabus" />   value="$lt{'syll'}=/public/$coursedom/$coursenum/syllabus" />
Line 3100  NFFORM Line 3162  NFFORM
  </span>   </span>
  </form>   </form>
 NSYLFORM  NSYLFORM
   
  my $newgroupfileform=(<<NGFFORM);   my $newgroupfileform=(<<NGFFORM);
  <form action="/adm/coursedocs" method="post" name="newgroupfiles">   <form action="/adm/coursedocs" method="post" name="newgroupfiles">
    <input type="hidden" name="active" value="cc" />
  $uploadtag   $uploadtag
  <input type="hidden" name="importdetail"   <input type="hidden" name="importdetail"
  value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" />   value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" />
Line 3125  if($env{'form.pagepath'}) { Line 3188  if($env{'form.pagepath'}) {
 }  }
   
 my %orderhash = (  my %orderhash = (
                 'aa' => 'New Document',                  'aa' => ['Upload Document',$fileuploadform.'<br />'.$newfolderform],
                 'bb' => 'Published Documents',                  'bb' => ['Published Resources',$simpleeditdefaultform],
                 'cc' => 'Special Documents',                  'cc' => ['Special Documents',$specialdocumentsform],
  'dd' => 'Tools',   'dd' => ['Tools',$extresourcesform.'<br />'.$imspform.'<br />'.$recoverform.'<br />'.&generate_admin_options($containertag,$uploadtag,\%help,\%env)],
                 'zz' => 'Hide all Options',                  'zz' => ['Hide'],
                 );  
 my %namehash = (  
                 'New Document' => $fileuploadform.'<br />'.$newfolderform,  
                 'Published Documents' => $simpleeditdefaultform,  
                 'Special Documents' => $specialdocumentsform,  
  'Tools' => $extresourcesform.'<br />'.$imspform.'<br />'.$recoverform.'<br />'.&generate_admin_options($containertag,$uploadtag,\%help,\%env),  
                 );                  );
 my $tid='1';  my $tid='1';
 my $varcd = 'Main Course Documents';  my $varcd = 'Main Course Documents';
 $r->print(&generate_edit_table($tid,$varcd,\%namehash,\%orderhash));  $r->print(&generate_edit_table($tid,$varcd,\%orderhash));
  $hadchanges=0;   $hadchanges=0;
         my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type);          my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type);
        if ($error) {         if ($error) {
Line 3150  $r->print(&generate_edit_table($tid,$var Line 3207  $r->print(&generate_edit_table($tid,$var
        }         }
   
        &changewarning($r,'');         &changewarning($r,'');
    $r->print(&Apache::loncommon::help_open_topic('Docs_Adding_Course_Doc',
                        &mt('Editing the Table of Contents for your '.$type)));
 $r->print('</div>');  $r->print('</div>');
        if ($env{'form.pagepath'}) {         if ($env{'form.pagepath'}) {
        }         }
Line 3158  $r->print('</div>'); Line 3217  $r->print('</div>');
        if($activeClass == 1){         if($activeClass == 1){
           $active = 'style="display: block;"';            $active = 'style="display: block;"';
        }         }
        $r->print('<div class="LC_ContentBox" id="Supplemental Course Documents" '.$active.'>');         $r->print('<div class="LC_ContentBox" id="supplCourseDocuments" '.$active.'>');
        my $folder=$env{'form.folder'};         my $folder=$env{'form.folder'};
        unless ($folder=~/^supplemental/) {         unless ($folder=~/^supplemental/) {
    $folder='supplemental';     $folder='supplemental';
Line 3180  $r->print('</div>'); Line 3239  $r->print('</div>');
   
  my $supupdocform=(<<SUPDOCFORM);   my $supupdocform=(<<SUPDOCFORM);
  <form action="/adm/coursedocs" method="post" enctype="multipart/form-data">   <form action="/adm/coursedocs" method="post" enctype="multipart/form-data">
    <input type="hidden" name="active" value="ee" />
  $fileupload   $fileupload
  <br />   <br />
  <br />   <br />
Line 3202  SUPDOCFORM Line 3262  SUPDOCFORM
   
  my $supnewfolderform=(<<SNFFORM);   my $supnewfolderform=(<<SNFFORM);
  <form action="/adm/coursedocs" method="post" name="supnewfolder">   <form action="/adm/coursedocs" method="post" name="supnewfolder">
    <input type="hidden" name="active" value="ee" />
  <input type="hidden" name="folderpath" value="$path" />   <input type="hidden" name="folderpath" value="$path" />
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newfolder" type="button"   <input name="newfolder" type="button"
  onClick="javascript:makenewfolder(this.form,'$folderseq');"   onclick="javascript:makenewfolder(this.form,'$folderseq');"
  value="$lt{'newf'}" /> $help{'Adding_Folders'}   value="$lt{'newf'}" /> $help{'Adding_Folders'}
  </span>   </span>
  </form>   </form>
Line 3215  SNFFORM Line 3276  SNFFORM
   
  my $supnewextform=(<<SNEFORM);   my $supnewextform=(<<SNEFORM);
  <form action="/adm/coursedocs" method="post" name="supnewext">   <form action="/adm/coursedocs" method="post" name="supnewext">
    <input type="hidden" name="active" value="ff" />
  <input type="hidden" name="folderpath" value="$path" />   <input type="hidden" name="folderpath" value="$path" />
  <input type="hidden" name="importdetail" value="" />   <input type="hidden" name="importdetail" value="" />
  <span class="LC_nobreak">   <span class="LC_nobreak">
  <input name="newext" type="button"    <input name="newext" type="button" 
  onClick="javascript:makenewext('supnewext');"   onclick="javascript:makenewext('supnewext');"
  value="$lt{'extr'}" /> $help{'Adding_External_Resource'}   value="$lt{'extr'}" /> $help{'Adding_External_Resource'}
  </span>   </span>
  </form>   </form>
Line 3227  SNEFORM Line 3289  SNEFORM
   
  my $supnewsylform=(<<SNSFORM);   my $supnewsylform=(<<SNSFORM);
  <form action="/adm/coursedocs" method="post" name="supnewsyl">   <form action="/adm/coursedocs" method="post" name="supnewsyl">
    <input type="hidden" name="active" value="ff" />
  <input type="hidden" name="folderpath" value="$path" />   <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" />
Line 3239  SNSFORM Line 3302  SNSFORM
   
  my $supnewaboutmeform=(<<SNAMFORM);   my $supnewaboutmeform=(<<SNAMFORM);
  <form action="/adm/coursedocs" method="post" name="subnewaboutme">   <form action="/adm/coursedocs" method="post" name="subnewaboutme">
    <input type="hidden" name="active" value="ff" />
  <input type="hidden" name="folderpath" value="$path" />   <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" />
Line 3252  SNAMFORM Line 3316  SNAMFORM
   
   
 my %suporderhash = (  my %suporderhash = (
                 'ee' => 'New Document',                  'ee' => ['Upload Document',$supupdocform.'<br />'.$supnewfolderform],
                 'ff' => 'Special Documents',                  'ff' => ['Special Documents',$supnewextform.'<br />'.$supnewsylform.'<br />'.$supnewaboutmeform],
                 'zz' => 'Hide all Options',                  'zz' => ['Hide'],
                 );  
   
 my %supnamehash = (  
                 'New Document' => $supupdocform.'<br />'.$supnewfolderform,  
                 'Special Documents' => $supnewextform.'<br />'.$supnewsylform.'<br />'.$supnewaboutmeform,  
                 );                  );
   
 my $tid='2';  my $tid='2';
 my $varscd = 'Supplemental Course Documents';  my $varscd = 'Supplemental Course Documents';
   
 $r->print(&generate_edit_table($tid,$varscd,\%supnamehash,\%suporderhash));  $r->print(&generate_edit_table($tid,$varscd,\%suporderhash));
 my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type);  my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type);
        if ($error) {         if ($error) {
            $r->print('<p><span class="LC_error">'.$error.'</span></p>');             $r->print('<p><span class="LC_error">'.$error.'</span></p>');
        }         }
 $r->print('</div>');  $r->print('</div>');
  }    }
 $r->print('</div>');  $r->print('</div>');
     if ($allowed) {      if ($allowed) {
  $r->print('   $r->print('
Line 3294  $r->print('</div>'); Line 3353  $r->print('</div>');
  }   }
  $r->print(&Apache::loncommon::end_page());   $r->print(&Apache::loncommon::end_page());
  return OK;   return OK;
 }   }
   
 sub generate_admin_options {  sub generate_admin_options {
   my ($containertag,$uploadtag,$help_ref,$env_ref) = @_;    my ($containertag,$uploadtag,$help_ref,$env_ref) = @_;
Line 3324  ENDOPTIONFORM Line 3383  ENDOPTIONFORM
   
   
 sub generate_edit_table {  sub generate_edit_table {
     my ($tid,$varcd,$namehash_ref,$orderhash_ref) = @_;      my ($tid,$varcd,$orderhash_ref) = @_;
     my %namehash = %{$namehash_ref};  
     my %orderhash = %{$orderhash_ref};      my %orderhash = %{$orderhash_ref};
     my $form;      my $form;
       my $activetab;
     $form = '<div class="LC_ContentBoxSpecial"><h4 class="LC_hcell">'.&mt($varcd).'</h4>';      my $active;
       if($env{'form.active'} ne ''){
           $activetab = $env{'form.active'};
       }
       $form = '<div class="LC_Box"><h4 class="LC_hcell">'.&mt($varcd).'</h4>';
     $form .= '<ul id="navigation'.$tid.'" class="LC_TabContent">';      $form .= '<ul id="navigation'.$tid.'" class="LC_TabContent">';
     foreach my $name (sort(keys(%orderhash))){      foreach my $name (sort(keys(%orderhash))){
         if($name eq 'zz'){          if($name eq 'zz'){
             $form .= '<span class="LC_Right"><li onclick="javascript:hideAll(this, \'navigation'.$tid.'\' ,\'content'.$tid.'\');" class="active">'.&mt($orderhash{$name}).'</li></span>';              if($activetab ne ''){
                  $active = 'class="right"';
               }else{
                  $active = 'class="right active"';
               }
               $form .= '<li onclick="javascript:hideAll(this, \'navigation'.$tid.'\' ,\'content'.$tid.'\');" '.$active.'>'.&mt(${$orderhash{$name}}[0]).'</li>';
         }else{          }else{
             $form .= '<li onclick="javascript:showPage(this, \''.substr($orderhash{$name},0,3).$tid.'\', \'navigation'.$tid.'\',\'content'.$tid.'\');">'.&mt($orderhash{$name}).'</li>';              if($activetab eq '' || $activetab ne $name){
                  $active = '';
               }elsif($activetab eq $name){
                  $active = 'class="active"';
               }
               $form .= '<li '.$active.' onclick="javascript:showPage(this, \''.$name.$tid.'\', \'navigation'.$tid.'\',\'content'.$tid.'\');">'.&mt(${$orderhash{$name}}[0]).'</li>';
         }          }
     }      }
     $form .= '</ul>';      $form .= '</ul>';
     $form .= '<div id="content'.$tid.'" style="padding: 0 0; margin: 0 0;">';      $form .= '<div id="content'.$tid.'" style="padding: 0 0; margin: 0 0;">';
     foreach my $field (keys(%namehash)){      foreach my $field (keys(%orderhash)){
         $form .= '<div id="'.substr($field,0,3).$tid.'" class="LC_ContentBox" style="display: none;">'.$namehash{$field}.'</div>';   if($field ne 'zz'){
       }          if($activetab eq '' || $activetab ne $field){
                   $active = 'style="display: none;"';
           }elsif($activetab eq $field){
                   $active = 'style="display:block;"';
           }
              $form .= '<div id="'.$field.$tid.'"'
                      .' class="LC_ContentBox" '.$active.'>'.${$orderhash{$field}}[1]
                      .'</div>';
           }
       }
     $form .= '</div></div>';      $form .= '</div></div>';
       
     return $form;      return $form;
 }  }
   
Line 3553  function unselectInactive(nav) { Line 3634  function unselectInactive(nav) {
 currentNav = document.getElementById(nav);  currentNav = document.getElementById(nav);
 currentLis = currentNav.getElementsByTagName('LI');  currentLis = currentNav.getElementsByTagName('LI');
 for (i = 0; i < currentLis.length; i++) {  for (i = 0; i < currentLis.length; i++) {
  currentLis[i].className = 'i';   if(currentLis[i].className == 'right active' || currentLis[i].className == 'right'){
    currentLis[i].className = 'right';
    }else{
    currentLis[i].className = 'i';
    }
 }  }
 }  }
   
 function hideAll(current, nav, data) {  function hideAll(current, nav, data) {
 unselectInactive(nav);  unselectInactive(nav);
 current.className = 'active';  if(current.className == 'right'){
    current.className = 'right active'
    }else{
    current.className = 'active';
   }
 currentData = document.getElementById(data);  currentData = document.getElementById(data);
 currentDivs = currentData.getElementsByTagName('DIV');  currentDivs = currentData.getElementsByTagName('DIV');
 for (i = 0; i < currentDivs.length; i++) {  for (i = 0; i < currentDivs.length; i++) {
Line 3569  for (i = 0; i < currentDivs.length; i++) Line 3658  for (i = 0; i < currentDivs.length; i++)
 }  }
 }  }
   
   function openTabs(pageId) {
    tabnav = document.getElementById(pageId).getElementsByTagName('UL');
    if(tabnav.length > 0 ){
    currentNav = document.getElementById(tabnav[0].id);
    currentLis = currentNav.getElementsByTagName('LI');
    for(i = 0; i< currentLis.length; i++){
    if(currentLis[i].className == 'active') {
    funcString = currentLis[i].onclick.toString();
    tab = funcString.split('"');
    currentData = document.getElementById(tab[1]);
           currentData.style.display = 'block';
    }
    }
    }
   }
   
 function showPage(current, pageId, nav, data) {  function showPage(current, pageId, nav, data) {
  hideAll(current, nav, data);   hideAll(current, nav, data);
    openTabs(pageId);
  unselectInactive(nav);   unselectInactive(nav);
  current.className = 'active';   current.className = 'active';
  currentData = document.getElementById(pageId);   currentData = document.getElementById(pageId);

Removed from v.1.362  
changed lines
  Added in v.1.378


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