Diff for /loncom/imspackages/imsimportdocs.pm between versions 1.1 and 1.12

version 1.1, 2004/03/02 15:45:06 version 1.12, 2005/04/07 06:56:22
Line 1 Line 1
   # Copyright Michigan State University Board of Trustees
   #
   # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   #
   # LON-CAPA is free software; you can redistribute it and/or modify
   # it under the terms of the GNU General Public License as published by
   # the Free Software Foundation; either version 2 of the License, or
   # (at your option) any later version.
   #
   # LON-CAPA is distributed in the hope that it will be useful,
   # but WITHOUT ANY WARRANTY; without even the implied warranty of
   # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   # GNU General Public License for more details.
   #
   # You should have received a copy of the GNU General Public License
   # along with LON-CAPA; if not, write to the Free Software
   # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   #
   # /home/httpd/html/adm/gpl.txt
   #
   # http://www.lon-capa.org/
   #
   
 package Apache::imsimportdocs;  package Apache::imsimportdocs;
   
   use Apache::Constants qw(:common :http :methods);
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::londocs;
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::imsprocessor;  use Apache::imsprocessor;
 use LONCAPA::Configuration;  use LONCAPA::Configuration;
   use strict;
   
 sub jscript_one {  sub jscript_one {
     my $javascript = shift;      my $javascript = shift;
Line 41  function setOptions(caller,itemnum) { Line 67  function setOptions(caller,itemnum) {
     if (caller == "board") {      if (caller == "board") {
       opForm.elements[menu].options[0] = new Option("Select","-1",true,true)        opForm.elements[menu].options[0] = new Option("Select","-1",true,true)
       opForm.elements[menu].options[1] = new Option("Import topics only","topics",true,true)        opForm.elements[menu].options[1] = new Option("Import topics only","topics",true,true)
       opForm.elements[menu].options[2] = new Option("Import topics & posts (with author)","allpost",true,true)        opForm.elements[menu].options[2] = new Option("Import topics + posts (with author)","allpost",true,true)
       opForm.elements[menu].options[3] = new Option("Import topics & posts (no author)","allanon",true,true)        opForm.elements[menu].options[3] = new Option("Import topics + posts (no author)","allanon",true,true)
     }      }
     else {       else { 
       if (caller == "users") {        if (caller == "users") {
Line 94  function nextPage(caller) { Line 120  function nextPage(caller) {
 #;  #;
 }  }
   
   sub jscript_three {
       my $javascript = shift;
       $$javascript = qq|
   function init(tf) {
       setTimeout("self.close()",3000)
       tf.submit();   
   }
       |;
   }
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
     my $javascript = '';      my $javascript = '';
Line 101  sub handler { Line 137  sub handler {
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
     my @areas = ("doc","extlink","announce","staff","board","quiz","survey","pool","users");      my @areas = ();
     my %cmsmap = ();      my %cmsmap = ();
     %{$cmsmap{bb5}} = (      my %areaname = ();
                 announce => 'resource/x-bb-announcement',      &Apache::imsprocessor::ims_config(\@areas,\%cmsmap,\%areaname);
                 board => 'resource/x-bb-discussionboard',  
                 doc => 'resource/x-bb-document',  
                 extlink => 'resource/x-bb-externallink',  
                 pool => 'assessment/x-bb-pool',  
                 quiz => 'assessment/x-bb-quiz',  
                 staff => 'resource/x-bb-staffinfo',  
                 survey => 'assessment/x-bb-survey',  
                 users => 'course/x-bb-user',  
                 );  
    
     %{$cmsmap{angel}} =  (  
                 board => 'BOARD',  
                 extlink => 'LINK',  
                 msg => 'MESSAGE',  
                 quiz => 'QUIZ',  
                 survey => 'FORM',  
                 );  
   
     @{$cmsmap{angel}{doc}} = ('FILE','PAGE');  
   
 # get course data  # get course data
     my $coursenum=$ENV{'course.'.$ENV{'request.course.id'}.'.num'};      my $coursenum=$env{'course.'.$env{'request.course.id'}.'.num'};
     my $coursedom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};      my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'};
     my $coursehome=$ENV{'course.'.$ENV{'request.course.id'}.'.home'};      my $coursehome=$env{'course.'.$env{'request.course.id'}.'.home'};
   
 # get personal data  # get personal data
     
     my $uname=$ENV{'user.name'};      my $uname=$env{'user.name'};
     my $udom=$ENV{'user.domain'};      my $udom=$env{'user.domain'};
     my $plainname=&Apache::lonnet::escape(      my $plainname=&Apache::lonnet::escape(
                      &Apache::loncommon::plainname($uname,$udom));                       &Apache::loncommon::plainname($uname,$udom));
   
 # does this user have privileges to post, etc?  # does this user have privileges to post, etc?
     my $allowed=&Apache::lonnet::allowed('mdc',$ENV{'request.course.id'});      my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
     unless ($allowed) {      unless ($allowed) {
         $r->print("<html><head><title>The LearningOnline Network with CAPA</title></head>");          $r->print("<html><head><title>The LearningOnline Network with CAPA</title></head>");
         $r->print(&Apache::loncommon::bodytag('Import IMS package'));            $r->print(&Apache::loncommon::bodytag('Import IMS package',undef,'',1));  
         $r->print('<h3>'.&mt('Modification of Course Contents Disallowed').'</h3>'.&mt('Your current role does not grant you the right to modify course content in this course.').'</body></html>');          $r->print('<h3>'.&mt('Modification of Course Contents Disallowed').'</h3>'.&mt('Your current role does not grant you the right to modify course content in this course.').'</body></html>');
         return OK;          return OK;
     }      }
Line 149  sub handler { Line 166  sub handler {
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
        ['phase']);         ['phase']);
   
     if ($ENV{'form.phase'} eq 'one') {          if ($env{'form.phase'} eq 'one') {    
         &jscript_one(\$javascript);          &jscript_one(\$javascript);
     } elsif ($ENV{'form.phase'} eq 'two') {      } elsif ($env{'form.phase'} eq 'two') {
         &jscript_two(\$javascript);          &jscript_two(\$javascript);
       } elsif ($env{'form.phase'} eq 'three') {
           &jscript_three(\$javascript);
     }      }
   
 # print screen  # print screen
Line 168  $javascript Line 187  $javascript
 </head>  </head>
 ENDHEAD  ENDHEAD
 # -------------------------------------------------------------------- Body tag  # -------------------------------------------------------------------- Body tag
     $r->print(&Apache::loncommon::bodytag('Import IMS package'));      $r->print(&Apache::loncommon::bodytag('Import IMS package',undef,'',1));
     if ($ENV{'form.phase'} eq 'one') {      if ($env{'form.phase'} eq 'one') {
         &display_one($r);                 &display_one($r);       
     } elsif ($ENV{'form.phase'} eq 'two') {      } elsif ($env{'form.phase'} eq 'two') {
         &display_two($r,$coursenum,\@areas,%cmsmap);          &display_two($r,$coursenum,\@areas,\%areaname,%cmsmap);
     } elsif ($ENV{'form.phase'} eq 'three') {      } elsif ($env{'form.phase'} eq 'three') {
         &display_three($r,$coursenum,$coursedom,$coursehome,\@areas,%cmsmap);          &display_three($r,$coursenum,$coursedom,$coursehome,$uname,$udom,\@areas,%cmsmap);
     }         }   
     $r->print("</body><html>");      $r->print("</body><html>");
       return OK;
 }   } 
   
 sub uploadzip {  
     my $tempdir = shift;  
     my $fname=$ENV{'form.uploadname.filename'};  
 # Replace Windows backslashes by forward slashes  
     $fname=~s/\\/\//g;  
 # Get rid of everything but the actual filename  
     $fname=~s/^.*\/([^\/]+)$/$1/;  
 # Replace spaces by underscores  
     $fname=~s/\s+/\_/g;  
 # Replace all other weird characters by nothing  
     $fname=~s/[^\w\.\-]//g;  
 # See if there is anything left  
     unless ($fname) { return 'error: no uploaded file'; }  
   
 # Save the file  
     chomp($ENV{'form.uploadname'});  
     open(my $fh,'>'.$tempdir.'/'.$fname);  
     print $fh $ENV{'form.uploadname'};  
     close($fh);  
     return $fname;     
 }  
   
 sub display_one {  sub display_one {
     my $r = shift;      my ($r) = @_;
     my $timestamp = time;  
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['folder']);      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['folder']);
   
     $r->print(<<ENDBLOCK);      $r->print(<<ENDBLOCK);
Line 235  Please choose the CMS used to create you Line 233  Please choose the CMS used to create you
         <select name="source">          <select name="source">
          <option value='-1' selected="true">Please select           <option value='-1' selected="true">Please select
          <option value='bb5'>Blackboard 5           <option value='bb5'>Blackboard 5
            <option value='bb6'>Blackboard 6
          <option value='angel'>ANGEL           <option value='angel'>ANGEL
            <option value='webct4'>WebCT 4
         </select>          </select>
         </font>          </font>
        </td>         </td>
Line 259  Please choose the CMS used to create you Line 259  Please choose the CMS used to create you
       </tr>        </tr>
       <tr>        <tr>
        <td colspan='2'>&nbsp;         <td colspan='2'>&nbsp;
         <input type="hidden" name="folder" value="$ENV{'form.folder'}" />          <input type="hidden" name="folder" value="$env{'form.folder'}" />
         <input type="hidden" name="phase" value="two" />          <input type="hidden" name="phase" value="two" />
         <input type="file" name="uploadname" size="40" />          <input type="file" name="uploadname" size="40" />
        </td>         </td>
Line 298  ENDBLOCK Line 298  ENDBLOCK
   
   
 sub display_two {  sub display_two {
     my ($r,$crs,$areasref,%cmsmap) = @_;      my ($r,$crs,$areasref,$areaname,%cmsmap) = @_;
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['folder','source']);      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['folder','source']);
     my $cms = $ENV{'form.source'};      my $cms = $env{'form.source'};
     my $tempdir = &Apache::imsprocessor::create_tempdir('DOCS',$crs);      my $timenow = time;
     my $fname = &uploadzip($tempdir);      my $tempdir = &Apache::imsprocessor::create_tempdir('DOCS',$crs,$timenow);
       my $fname = &Apache::imsprocessor::uploadzip('DOCS',$tempdir);
     my $unzip_result = '';      my $unzip_result = '';
     my $manifest_result = '';      my $manifest_result = '';
     unless ($tempdir eq '') {      unless ($tempdir eq '') {
         $unzip_result = &Apache::imsprocessor::expand_zip($tempdir,$fname);          $unzip_result = &Apache::imsprocessor::expand_zip($tempdir,$fname);
     }      }
     my %resources = ();      my %resources = ();
       my %includedres = ();
       my %includeditems = ();
     my %items = ();      my %items = ();
     my %hrefs = ();      my %hrefs = ();
       my %resinfo = ();
     my %count = ();      my %count = ();
     my @bgcolors = ("#eeeeee","#dddddd");      my @bgcolors = ("#eeeeee","#dddddd");
   
Line 329  sub display_two { Line 333  sub display_two {
                 users => 0,                  users => 0,
                 );                  );
   
     my %areaname = (  
                 announce => 'Announcements',  
                 board => 'Discussion Boards',  
                 doc => 'Documents, pages &amp; folders',  
                 extlink => 'Links to external sites',  
                 pool => 'Question pools',  
                 quiz => 'Quizzes',  
                 staff => 'Staff information',  
                 survey => 'Surveys',  
                 users => 'Enrollment',  
                 );  
            
     if ($unzip_result eq 'ok') {      if ($unzip_result eq 'ok') {
         $manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir,\%resources,\%items,\%hrefs);          $manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir,\%resources,\%items,\%hrefs,\%resinfo,'choose',\%includedres,\%includeditems);
         if ($manifest_result eq 'ok') {          if ($manifest_result eq 'ok') {
             foreach my $res (sort keys %resources) {              foreach my $res (sort keys %resources) {
                 if ($cms eq 'bb5') {                  if ($cms eq 'bb5' || $cms eq 'bb6' || $cms eq 'webct4') {
                     foreach my $area (keys %{$cmsmap{$cms}}) {                      foreach my $area (keys %{$cmsmap{$cms}}) {
                         if ($resources{$res}{type} eq $cmsmap{$cms}{$area}) {                          if ($resources{$res}{type} eq $cmsmap{$cms}{$area}) {
                             $count{$area} ++;                              $count{$area} ++;
Line 408  ENDBLOCK Line 400  ENDBLOCK
                         $r->print(qq|onClick='javascript:setOptions("$area","$counter")'|);                          $r->print(qq|onClick='javascript:setOptions("$area","$counter")'|);
                     }                      }
                     $r->print("/></font></td>                      $r->print("/></font></td>
                 <td align='left'><font face='arial,helvetica,sans-serif'>&nbsp;&nbsp;$areaname{$area}&nbsp;&nbsp; - $count{$area} item(s)</font></td>");                  <td align='left'><font face='arial,helvetica,sans-serif'>&nbsp;&nbsp;$$areaname{$area}&nbsp;&nbsp; - $count{$area} item(s)</font></td>");
                     if ($area eq 'board') {                      if ($area eq 'board') {
                         $r->print("            <td align='left'><font face='arial,helvetica,sans-serif'>&nbsp;&nbsp;                          $r->print("            <td align='left'><font face='arial,helvetica,sans-serif'>&nbsp;&nbsp;
                  <select name='bb_handling'>                   <select name='db_handling'>
                   <option value='-2'>&lt;-- Check Import first                    <option value='-2'>&lt;-- Check Import first
                  </select></font>                   </select></font>
                 </td>");                  </td>");
Line 443  ENDBLOCK Line 435  ENDBLOCK
       <tr>        <tr>
        <td colspan='2'>&nbsp;<br /><br /></td>         <td colspan='2'>&nbsp;<br /><br /></td>
       </tr>        </tr>
         <tr bgcolor='#CCCCFF'>
          <td valign='middle'><img src='/res/adm/pages/bl_step4.gif'>
          </td>
          <td width='100%' align='left'>&nbsp;&nbsp;
           <font face='arial,helvetica,sans-serif'><b>Choose display options for listing of contents of top level of package.</b></font>
          </td>
         </tr>
         <tr>
          <td colspan='2'>&nbsp;</td>
         </tr>
         <tr>
          <td>&nbsp;</td>
          <td>
           <table border='0'>
            <tr>
             <td><font face='arial,helvetica,sans-serif'><input type="radio" name="toplevel" value="newfolder" />Display listing of contents in a new folder, with folder name:&nbsp;&nbsp;&nbsp;<input type="text" name="foldername" size="15" value="Type Name Here" /></font></td>
            </tr>
            <tr>
             <td><font face='arial,helvetica,sans-serif'><input type="radio" name="toplevel" value="oldfolder" />Append listing of contents of top level of package to contents list for the current folder.</font></td>
            </tr>
           </table>
          </td>
         </tr>
         <tr>
          <td colspan='2'>&nbsp;</td>
         </tr>
       <tr>        <tr>
        <td>&nbsp;</td>         <td>&nbsp;</td>
        <td><font face='arial,helvetica,sans-serif'>Once you have checked the checkboxes for all areas you wish to import from the IMS package, and selected options (if available) you should click the 'Complete Import' button.</font></td>         <td><font face='arial,helvetica,sans-serif'>Once you have checked the checkboxes for all areas you wish to import from the IMS package, selected options (if available), and selected a display option for the package contents you should click the 'Complete Import' button.</font></td>
       </tr>        </tr>
       <tr>        <tr>
        <td colspan='2'>&nbsp;         <td colspan='2'>&nbsp;
           <input type="hidden" name="folder" value="$ENV{'form.folder'}" />            <input type="hidden" name="folder" value="$env{'form.folder'}" />
           <input type="hidden" name="source" value="$cms" />            <input type="hidden" name="source" value="$cms" />
           <input type="hidden" name="tempdir" value="$tempdir" />            <input type="hidden" name="tempdir" value="$tempdir" />
           <input type="hidden" name="phase" value="three" />            <input type="hidden" name="phase" value="three" />
Line 484  ENDDOCUMENT Line 502  ENDDOCUMENT
   
   
 sub display_three {  sub display_three {
    my ($r,$crs,$cdom,$chome,$areas,%cmsmap) = @_;      my ($r,$crs,$cdom,$chome,$uname,$udom,$areas,%cmsmap) = @_;
    $r->print("You reached phase three");      my $folder = $env{'form.folder'};
    my $cms = $ENV{'form.source'};      my $cms = $env{'form.source'};
    my $tempdir = $ENV{'form.tempdir'};      my $tempdir = $env{'form.tempdir'};
    my $longcrs = '';      my $longcrs = '';
    if ($crs =~ m/^(\d)(\d)(\d)/) {      if ($crs =~ m/^(\d)(\d)(\d)/) {
        $longcrs = $1.'/'.$2.'/'.$3.'/'.$crs;          $longcrs = $1.'/'.$2.'/'.$3.'/'.$crs;
    }      }
    my $destdir = '';      my %importareas = ();
    my %imports = ();      my %includedres = ();
    my @targets = ();      my %includeditems = ();
    my %resources = ();      my @targets = ();
    my %items = ();      my %resources = ();
    my %hrefs = ();      my %items = ();
    my %urls = ();      my %hrefs = ();
    foreach my $area (@{$areas}) {      my %urls = ();
        if (defined($ENV{"form.$area"}) ) {                my %resinfo = ();
            if ($cms eq 'angel' && $area eq 'doc') {      my %total = (
                foreach (@{$cmsmap{$cms}{$area}}) {                   page => 0,
                    $imports{$_} = 1;                   prob => 0,
                }                   seq => 0,
            } else {                   board => 0,         
                $imports{$cmsmap{$cms}{$area}} = 1;                   quiz => 0,
            }                   surv => 0,
        }                  );
    }      my @pages = ();
          my @sequences = ();
    my $manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir,\%resources,\%items,\%hrefs);      my @resrcfiles = ();
    if ($manifest_result eq 'ok') {  
        &Apache::imsprocessor::target_resources(\%resources,\%imports,\@targets);      my $timenow = time;
        $copy_result = &Apache::imsprocessor::copy_resources('DOCS',$cms,\%hrefs,$tempdir,\@targets,\%urls,$crs,$cdom,$chome,$destdir);   
    }      my $destdir = $Apache::lonnet::perlvar{'lonDocRoot'}.'/userfiles/'.$cdom.'/'.$crs.'/'.$timenow;
       my $seqstem = "/uploaded/$cdom/$crs/$timenow";
       my $db_handling = '';
       my $user_handling = '';
   
       my $toplevel = '';
       my $foldername = '';
       my %topitems = ();
       if (defined($env{'form.toplevel'}) ) {
           $toplevel = $env{'form.toplevel'};     
       }
       if (defined($env{'form.foldername'}) ) {
           $foldername = $env{'form.foldername'}; 
       }
   
       foreach my $area (@{$areas}) {
           if (defined($env{"form.$area"}) && ($env{'form.'.$area} ne '')) {
               if ($cms eq 'angel' && $area eq 'doc') {
                   foreach (@{$cmsmap{$cms}{$area}}) {
                       $importareas{$_} = 1;
                   }
               } else {
                   $importareas{$cmsmap{$cms}{$area}} = 1;
               }
               if ($area eq 'board') {
                   $db_handling = $env{'form.db_handling'};
               } elsif ($area eq 'users') {
                   $user_handling = $env{'form.user_handling'};
               }
           }
       }
   
       my $manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir,\%resources,\%items,\%hrefs,\%resinfo,'prepare',\%includedres,\%includeditems);
       if ($manifest_result eq 'ok') {
           foreach my $res (sort keys %resources) {
               if ($importareas{$resources{$res}{type}}) {
                   $includedres{$res} = 1;
               }
           }
           foreach my $itm (sort keys %items) {
               &Apache::imsprocessor::get_imports(\%includeditems,\%items,\%resources,\%importareas,$itm);
           }
       }
       foreach my $itm (sort keys %includeditems) {
           &Apache::imsprocessor::get_parents(\%includeditems,\%items,$itm);
       }
   
       $manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir,\%resources,\%items,\%hrefs,\%resinfo,'build',\%includedres,\%includeditems);
       if ($manifest_result eq 'ok') {
   
           my @path = ($cdom,$crs,$timenow);
           my $fullpath = $Apache::lonnet::perlvar{'lonDocRoot'}.'/userfiles';
           foreach my $item (@path) {
               $fullpath .= '/'.$item;
               if (!-e "$fullpath") {
                   mkdir("$fullpath",0770);
               }
           }
           my @namedirs = ("resfiles","sequences","pages","problems");
           foreach my $name (@namedirs) {
               if (!-e "$fullpath/$name") {
                   mkdir("$fullpath/$name",0770);
               }
           }
           &Apache::imsprocessor::target_resources(\%resources,\%importareas,\@targets);
   
           my @boards = ();
           my @announcements = ();
           my @quizzes = ();
           my @surveys = ();
           my @pools = ();
           my @groups = ();
           my %messages = ();
           my @timestamp = ();
           my %boardnum = ();
           my @topurls = ();
           my @topnames = ();
           my @packages = ();
   
           &Apache::imsprocessor::process_resinfo($cms,'DOCS',$tempdir,$destdir,\%items,\%resources,\@targets,\@boards,\@announcements,\@quizzes,\@surveys,\@pools,\@groups,\%messages,\@timestamp,\%boardnum,\%resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,\%total,$seqstem,$seqstem,\@resrcfiles,\@packages,\%hrefs,\@pages,\@sequences);
   
           my $copy_result = &Apache::imsprocessor::copy_resources('DOCS',$cms,\%hrefs,$tempdir,\@targets,\%urls,$crs,$cdom,$chome,$destdir,$timenow,\%importareas);
   
           &Apache::imsprocessor::build_structure($cms,'DOCS',$destdir,\%items,\%resinfo,\%resources,\@targets,\%hrefs,$udom,$uname,'',$timenow,$cdom,$crs,\@timestamp,\%total,\@boards,\@announcements,\@quizzes,\@surveys,\@pools,\%boardnum,\@pages,\@sequences,\@topurls,\@topnames,\@packages,\%includeditems);
   
           foreach my $item (@pages) {
               my $filename = $timenow.'/pages/'.$item;
               my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$chome,$filename,'');
           }
           foreach my $item (@sequences) {
               unless ($item eq 'Top.sequence' && $toplevel eq 'oldfolder') {
                   my $filename = $timenow.'/sequences/'.$item;
                   my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$chome,$filename,'');
               }
           }
           foreach my $item (@resrcfiles) {
               my $filename = $timenow.'/resfiles/'.$item;
               my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$chome,$filename,'');
           }
   
           my @imports = ();
           if ($toplevel eq 'oldfolder') {
               for (my $i=0; $i<@topurls; $i++) {
                   my $url = &Apache::lonnet::unescape($topurls[$i]);
                   my $name = &Apache::lonnet::unescape($topnames[$i]);
                   push @imports, $name, $url;
               }
           } elsif ($toplevel eq 'newfolder') {
               my $url = &Apache::lonnet::unescape("/uploaded/$cdom/$crs/$timenow/sequences/Top.sequence");
               my $name = &Apache::lonnet::unescape("$env{'form.foldername'}");
               push @imports, $name, $url;
           }
           my $errtext='';
           my $fatal=0;
           ($errtext,$fatal)=  &Apache::londocs::mapread($crs,$cdom,$folder.'.sequence');
           if ($#Apache::lonratedt::order<1) {
               $Apache::lonratedt::order[0]=1;
               $Apache::lonratedt::resources[1]='';
           }
           my ($errtext,$fatal)=&Apache::londocs::group_import($crs,$cdom,$folder,'sequence','imsimport',@imports);
           if ($fatal) {
               print STDERR "Fatal error during group_import\n";
           }
       }
       if ($tempdir =~ m/^\/home\/httpd\/perl\/tmp\/$crs\/\d{10}/) {
           system("rm -r -f $tempdir");
       }
       $r->print(<<ENDBLOCK);
     <table border='0' bgcolor='#F6F6F6'' cellspacing='0' cellpadding ='0' width='100%'>
      <tr>
       <td colspan='2'>
        <table border='0' cellspacing='0' cellpadding='0'>
         <tr>
          <td colspan='2'  align='left'>&nbsp;
          </td>
         </tr>
         <tr bgcolor='#CCCCFF'>
          <td valign='middle'><img src='/res/adm/pages/bl_step5.gif'>
          </td>
          <td width='100%' align='left'>&nbsp;&nbsp;
           <font face='arial,helvetica,sans-serif'><b>Your import is complete</b></font>
          </td>
         </tr>
         <tr>
          <td colspan='2'>&nbsp;</td>
         </tr>
         <tr>
          <td>&nbsp;</td>
          <td>
   ENDBLOCK
       my $initblock = qq|  
            <form method="post" action="/adm/roles" target="loncapaclient" name="importDone">
              <input type="hidden" name="orgurl" value="/adm/coursedocs" />
              <input type="hidden" name="selectrole" value="1" />
              <h3><font color="red">Changes will become active for your current session after
              <input type="hidden" name="$env{'request.role'}" value="1" />
              <input type="button" value="|;
       $initblock .= &mt('re-initializing course');
       $initblock .= qq|" onClick="javascript:init(this.form)"/>|;
       $initblock .= ', '.&mt('or the next time you log in.');
       $initblock .= qq|</font></h3></form>|;  
       $r->print($initblock);
       $r->print(<<ENDBLOCKTWO);
        </table>
       </td>
      </tr>
     </table>
   ENDBLOCKTWO
 }  }
   
 1;  1;

Removed from v.1.1  
changed lines
  Added in v.1.12


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