Diff for /loncom/imspackages/imsimportdocs.pm between versions 1.2 and 1.3

version 1.2, 2004/03/09 16:34:34 version 1.3, 2004/03/16 19:20:58
Line 114  sub handler { Line 114  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'};
Line 187  ENDHEAD Line 168  ENDHEAD
     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,$uname,$udom,\@areas,%cmsmap);          &display_three($r,$coursenum,$coursedom,$coursehome,$uname,$udom,\@areas,%cmsmap);
     }         }   
Line 195  ENDHEAD Line 176  ENDHEAD
     return OK;      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) = @_;      my ($r) = @_;
Line 313  ENDBLOCK Line 273  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 $timenow = time;      my $timenow = time;
     my $tempdir = &Apache::imsprocessor::create_tempdir('DOCS',$crs,$timenow);      my $tempdir = &Apache::imsprocessor::create_tempdir('DOCS',$crs,$timenow);
     my $fname = &uploadzip($tempdir);      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 '') {
Line 346  sub display_two { Line 306  sub display_two {
                 users => 0,                  users => 0,
                 );                  );
   
     my %areaname = (  
                 announce => 'Announcements',  
                 board => 'Discussion Boards',  
                 doc => 'Documents, pages & 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,\%resinfo);          $manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir,\%resources,\%items,\%hrefs,\%resinfo);
         if ($manifest_result eq 'ok') {          if ($manifest_result eq 'ok') {
Line 425  ENDBLOCK Line 373  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='db_handling'>                   <select name='db_handling'>
Line 607  sub display_three { Line 555  sub display_three {
   
         &Apache::imsprocessor::process_resinfo($cms,$tempdir,$destdir,\%items,\%resources,\@boards,\@announcements,\@quizzes,\@surveys,\@groups,\%messages,\@timestamp,\%boardnum,\%resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,\%total,$dirname,$seqstem,\@resrcfiles);          &Apache::imsprocessor::process_resinfo($cms,$tempdir,$destdir,\%items,\%resources,\@boards,\@announcements,\@quizzes,\@surveys,\@groups,\%messages,\@timestamp,\%boardnum,\%resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,\%total,$dirname,$seqstem,\@resrcfiles);
   
         &Apache::imsprocessor::build_structure($cms,'DOCS',$destdir,\%resinfo,\%items,\%resources,\%hrefs,$udom,$uname,'',$timenow,$cdom,$crs,\@timestamp,\%total,\@boards,\@announcements,\@quizzes,\@surveys,\%boardnum,\@pages,\@sequences,\@topurls,\@topnames);          &Apache::imsprocessor::build_structure($cms,'DOCS',$destdir,\%items,\%resinfo,\%resources,\%hrefs,$udom,$uname,'',$timenow,$cdom,$crs,\@timestamp,\%total,\@boards,\@announcements,\@quizzes,\@surveys,\%boardnum,\@pages,\@sequences,\@topurls,\@topnames);
     
         foreach my $item (@pages) {          foreach my $item (@pages) {
             my $path = $timenow.'/pages/';              my $filename = $timenow.'/pages/'.$item;
             &copy_items($item,$path,$cdom,$chome,$crs);              my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$chome,$filename,'');
         }          }
         foreach my $item (@sequences) {          foreach my $item (@sequences) {
             unless ($item eq 'Top.sequence' && $toplevel eq 'oldfolder') {              unless ($item eq 'Top.sequence' && $toplevel eq 'oldfolder') {
                 my $path = $timenow.'/sequences/';                  my $filename = $timenow.'/sequences/'.$item;
                 &copy_items($item,$path,$cdom,$chome,$crs);                  my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$chome,$filename,'');
             }              }
         }          }
         foreach my $item (@resrcfiles) {          foreach my $item (@resrcfiles) {
             my $path = $timenow.'/resfiles/';              my $filename = $timenow.'/resfiles/'.$item;
             &copy_items($item,$path,$cdom,$chome,$crs);              my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$chome,$filename,'');
         }          }
   
         my @imports = ();          my @imports = ();
Line 648  sub display_three { Line 596  sub display_three {
             print STDERR "Fatal error during group_import\n";              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);      $r->print(<<ENDBLOCK);
   <table border='0' bgcolor='#F6F6F6'' cellspacing='0' cellpadding ='0' width='100%'>    <table border='0' bgcolor='#F6F6F6'' cellspacing='0' cellpadding ='0' width='100%'>
    <tr>     <tr>
Line 691  ENDBLOCK Line 642  ENDBLOCK
 ENDBLOCKTWO  ENDBLOCKTWO
 }  }
   
 sub copy_items {  
     my ($filename,$fpath,$cdom,$chome,$crs) = @_;      
     my $fetchresult= &Apache::lonnet::reply('fetchuserfile:'.$cdom.'/'.$crs.'/'.$filename.':'.$fpath,$chome);  
 }  
   
 1;  1;
 __END__  __END__

Removed from v.1.2  
changed lines
  Added in v.1.3


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