version 1.41, 2007/09/30 13:20:08
|
version 1.42, 2008/08/23 17:47:44
|
Line 25 package Apache::imsprocessor;
|
Line 25 package Apache::imsprocessor;
|
|
|
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::loncleanup; |
use Apache::loncleanup; |
|
use Apache::lonlocal; |
use LWP::UserAgent; |
use LWP::UserAgent; |
use HTTP::Request::Common; |
use HTTP::Request::Common; |
use LONCAPA::Configuration; |
use LONCAPA::Configuration; |
Line 75 sub ims_config {
|
Line 76 sub ims_config {
|
survey => 'webctsurvey', |
survey => 'webctsurvey', |
doc => 'webcontent' |
doc => 'webcontent' |
); |
); |
%{$areaname} = ( |
%{$areaname} = &Apache::lonlocal::texthash ( |
announce => 'Announcements', |
announce => 'Announcements', |
board => 'Discussion Boards', |
board => 'Discussion Boards', |
doc => 'Documents, pages, and folders', |
doc => 'Documents, pages, and folders', |
Line 308 sub parse_manifest {
|
Line 309 sub parse_manifest {
|
if ($cms eq 'bb5' || $cms eq 'bb6' || |
if ($cms eq 'bb5' || $cms eq 'bb6' || |
$cms eq 'webctce4' || $cms eq 'webctvista4') { |
$cms eq 'webctce4' || $cms eq 'webctvista4') { |
push @{$$hrefs{$identifier}},$attr->{href}; |
push @{$$hrefs{$identifier}},$attr->{href}; |
|
|
if ($$resources{$identifier}{type} eq |
if ($$resources{$identifier}{type} eq |
'webct.manifest') { |
'webct.manifest') { |
my $manifestfile = $tempdir.'/'.$attr->{href}; |
my $manifestfile = $tempdir.'/'.$attr->{href}; |
Line 466 sub copy_resources {
|
Line 466 sub copy_resources {
|
mkdir("$fulldir",0770); |
mkdir("$fulldir",0770); |
} |
} |
} |
} |
|
my $renameres; |
if ($cms eq 'angel') { |
if ($cms eq 'angel') { |
rename("$tempdir/_assoc/$key/$file","$destdir/resfiles/$key/$file"); |
$renameres = rename("$tempdir/_assoc/$key/$file","$destdir/resfiles/$key/$file"); |
} elsif ($cms eq 'bb5' || $cms eq 'bb6') { |
} elsif ($cms eq 'bb5' || $cms eq 'bb6') { |
rename("$tempdir/$key/$file","$destdir/resfiles/$key/$file"); |
$renameres = rename("$tempdir/$key/$file","$destdir/resfiles/$key/$file"); |
|
} |
|
if (!$renameres) { |
|
&Apache::lonnet::logthis("IMS import error: $cms - renaming failed for file $file"); |
} |
} |
} elsif ($cms eq 'webctce4') { |
} elsif ($cms eq 'webctce4') { |
if ($file =~ m-/my_files/(.+)$-) { |
if ($file =~ m-/my_files/(.+)$-) { |
Line 486 sub copy_resources {
|
Line 490 sub copy_resources {
|
} |
} |
} |
} |
if (-e "$tempdir/$file") { |
if (-e "$tempdir/$file") { |
rename("$tempdir/$file","$destdir/resfiles/$copyfile"); |
my $renameres = rename("$tempdir/$file","$destdir/resfiles/$copyfile"); |
|
if (!$renameres) { |
|
&Apache::lonnet::logthis("IMS import error: WebCT4 - renaming failed for file $file"); |
|
} |
} |
} |
} elsif ($file !~ m-/data/(.+)$-) { |
} elsif ($file !~ m-/data/(.+)$-) { |
&Apache::lonnet::logthis("IMS import error: WebCT4 - file $file is in unexpected location"); |
&Apache::lonnet::logthis("IMS import error: WebCT4 - file $file is in unexpected location"); |
Line 735 sub build_structure {
|
Line 742 sub build_structure {
|
my $curr_id = 1; |
my $curr_id = 1; |
my $resnum = $$items{$key}{resnum}; |
my $resnum = $$items{$key}{resnum}; |
my $type = $$resources{$resnum}{type}; |
my $type = $$resources{$resnum}{type}; |
my $contentscount = $$items{$key}{'contentscount'}; |
my $contentscount = $$items{$key}{'contentscount'}; |
|
my $seqtitle = $$items{$key}{'title'}; |
|
$seqtitle =~ s|/+|_|g; |
|
$seqtitle =~ s/\s+/_/g; |
|
$seqtitle .= '_'.$key; |
if (($cms eq 'angel' && $type eq "FOLDER") || (($cms eq 'bb5' || $cms eq 'bb6') && $$resinfo{$resnum}{'isfolder'} eq "true") && (($type eq "resource/x-bb-document") || ($type eq "resource/x-bb-staffinfo") || ($type eq "resource/x-bb-externallink")) || ($cms eq 'webctce4' && $contentscount > 0)) { |
if (($cms eq 'angel' && $type eq "FOLDER") || (($cms eq 'bb5' || $cms eq 'bb6') && $$resinfo{$resnum}{'isfolder'} eq "true") && (($type eq "resource/x-bb-document") || ($type eq "resource/x-bb-staffinfo") || ($type eq "resource/x-bb-externallink")) || ($cms eq 'webctce4' && $contentscount > 0)) { |
unless (($cms eq 'bb5') && $key eq 'Top') { |
unless (($cms eq 'bb5') && $key eq 'Top') { |
$seqtext{$key} = "<map>\n"; |
$seqtext{$key} = "<map>\n"; |
Line 773 sub build_structure {
|
Line 784 sub build_structure {
|
if (grep/^$res$/,@{$packages}) { |
if (grep/^$res$/,@{$packages}) { |
$packageflag = 1; |
$packageflag = 1; |
} |
} |
$src = &make_structure($cms,$key,$srcstem,\%flag,\%count,$timestamp,$boardnum,$hrefs,\%pagecontents,$res,$type,$file,$resinfo,$contitem,$uname,$cdom,$contcount,$packageflag,$contitemcount,$$randompicks{$contitem}); |
$src = &make_structure($cms,$key,$srcstem,\%flag,\%count,$timestamp,$boardnum,$hrefs,\%pagecontents,$res,$type,$file,$resinfo,$contitem,$uname,$cdom,$contcount,$packageflag,$contitemcount,$$randompicks{$contitem},$title); |
unless ($flag{$key}{page} == 1) { |
unless ($flag{$key}{page} == 1) { |
if ($$randompicks{$contitem}) { |
if ($$randompicks{$contitem}) { |
$seqtext{$key} .= qq| |
$seqtext{$key} .= qq| |
Line 813 sub build_structure {
|
Line 824 sub build_structure {
|
if (grep/^$res$/,@{$packages}) { |
if (grep/^$res$/,@{$packages}) { |
$packageflag = 1; |
$packageflag = 1; |
} |
} |
$src = &make_structure($cms,$key,$srcstem,\%flag,\%count,$timestamp,$boardnum,$hrefs,\%pagecontents,$res,$type,$file,$resinfo,$contitem,$uname,$cdom,$contcount,$packageflag,$contitemcount,$$randompicks{$contitem}); |
$src = &make_structure($cms,$key,$srcstem,\%flag,\%count,$timestamp,$boardnum,$hrefs,\%pagecontents,$res,$type,$file,$resinfo,$contitem,$uname,$cdom,$contcount,$packageflag,$contitemcount,$$randompicks{$contitem},$title); |
unless ($flag{$key}{page} == 1) { |
unless ($flag{$key}{page} == 1) { |
$seqtext{$key} .= qq|></resource> |
$seqtext{$key} .= qq|></resource> |
<link from="$curr_id" to="$next_id" index="$curr_id"></link>\n|; |
<link from="$curr_id" to="$next_id" index="$curr_id"></link>\n|; |
Line 845 sub build_structure {
|
Line 856 sub build_structure {
|
if (grep/^$res$/,@{$packages}) { |
if (grep/^$res$/,@{$packages}) { |
$packageflag = 1; |
$packageflag = 1; |
} |
} |
$src = &make_structure($cms,$key,$srcstem,\%flag,\%count,$timestamp,$boardnum,$hrefs,\%pagecontents,$res,$type,$file,$resinfo,$contitem,$uname,$cdom,$contcount,$packageflag,$contitemcount,$$randompicks{$contitem}); |
$src = &make_structure($cms,$key,$srcstem,\%flag,\%count,$timestamp,$boardnum,$hrefs,\%pagecontents,$res,$type,$file,$resinfo,$contitem,$uname,$cdom,$contcount,$packageflag,$contitemcount,$$randompicks{$contitem},$title); |
|
|
if ($flag{$key}{page}) { |
if ($flag{$key}{page}) { |
if ($count{$key}{seq} + $count{$key}{page} + $count{$key}{board} + $count{$key}{file} +1 == 1) { |
if ($count{$key}{seq} + $count{$key}{page} + $count{$key}{board} + $count{$key}{file} +1 == 1) { |
Line 879 sub build_structure {
|
Line 890 sub build_structure {
|
} |
} |
unless (($cms eq 'bb5') && $key eq 'Top') { |
unless (($cms eq 'bb5') && $key eq 'Top') { |
$seqtext{$key} .= "</map>\n"; |
$seqtext{$key} .= "</map>\n"; |
open(LOCFILE,">$destdir/sequences/$key.sequence"); |
if ($cms eq 'webctce4' && $key ne 'Top') { |
|
push @{$seqfiles}, "$seqtitle.sequence"; |
|
open(LOCFILE,">$destdir/sequences/$seqtitle.sequence"); |
|
} else { |
|
push @{$seqfiles}, "$key.sequence"; |
|
open(LOCFILE,">$destdir/sequences/$key.sequence"); |
|
} |
print LOCFILE $seqtext{$key}; |
print LOCFILE $seqtext{$key}; |
close(LOCFILE); |
close(LOCFILE); |
push @{$seqfiles}, "$key.sequence"; |
|
} |
} |
$count{$key}{page} ++; |
$count{$key}{page} ++; |
$$total{page} += $count{$key}{page}; |
$$total{page} += $count{$key}{page}; |
Line 972 sub build_structure {
|
Line 988 sub build_structure {
|
} |
} |
|
|
sub make_structure { |
sub make_structure { |
my ($cms,$key,$srcstem,$flag,$count,$timestamp,$boardnum,$hrefs,$pagecontents,$res,$type,$file,$resinfo,$contitem,$uname,$cdom,$contcount,$packageflag,$contitemcount,$randompick) = @_; |
my ($cms,$key,$srcstem,$flag,$count,$timestamp,$boardnum,$hrefs,$pagecontents,$res,$type,$file,$resinfo,$contitem,$uname,$cdom,$contcount,$packageflag,$contitemcount,$randompick,$title) = @_; |
my $src =''; |
my $src =''; |
if (($cms eq 'angel' && $type eq 'FOLDER') || (($cms eq 'bb5' || $cms eq 'bb6') && (($$resinfo{$res}{'isfolder'} eq 'true') || $key eq 'Top')) || ($cms eq 'webctce4' && $contitemcount > 0)) { |
if (($cms eq 'angel' && $type eq 'FOLDER') || (($cms eq 'bb5' || $cms eq 'bb6') && (($$resinfo{$res}{'isfolder'} eq 'true') || $key eq 'Top')) || ($cms eq 'webctce4' && $contitemcount > 0)) { |
$src = $srcstem.'/sequences/'.$contitem.'.sequence'; |
$src = $srcstem.'/sequences/'.$contitem.'.sequence'; |
|
if ($cms eq 'webctce4') { |
|
$title =~ s|/+|_|g; |
|
$title =~ s/\s+/_/g; |
|
$title .= '_'.$contitem; |
|
$src = $srcstem.'/sequences/'.$title.'.sequence'; |
|
} |
$$flag{$key}{page} = 0; |
$$flag{$key}{page} = 0; |
$$flag{$key}{seq} = 1; |
$$flag{$key}{seq} = 1; |
$$count{$key}{seq} ++; |
$$count{$key}{seq} ++; |
Line 1038 sub make_structure {
|
Line 1060 sub make_structure {
|
if ($file =~ m-/([^/]+)$-) { |
if ($file =~ m-/([^/]+)$-) { |
$filename = $1; |
$filename = $1; |
} |
} |
$src = $srcstem.'/resfiles/'.$res.'/'.$filename; |
$src = $srcstem.'/resfiles/'.$filename; |
} else { |
} else { |
foreach my $file (@{$$hrefs{$res}}) { |
foreach my $file (@{$$hrefs{$res}}) { |
my $filename; |
my $filename; |
if ($file =~ m-/([^/]+)$-) { |
if ($file =~ m-/my_files/(.+)$-) { |
|
$filename = $1; |
|
} elsif ($file =~ m-/([^/]+)$-) { |
$filename = $1; |
$filename = $1; |
} |
} |
$src = $srcstem.'/resfiles/'.$res.'/'.$filename; |
$src = $srcstem.'/resfiles/'.$filename; |
} |
} |
} |
} |
$$flag{$key}{page} = 0; |
$$flag{$key}{page} = 0; |
Line 5304 sub angel_content {
|
Line 5328 sub angel_content {
|
# ---------------------------------------------------------------- WebCT content |
# ---------------------------------------------------------------- WebCT content |
sub webct4_content { |
sub webct4_content { |
my ($res,$docroot,$destdir,$settings,$dom,$user,$type,$title,$resrcfiles) = @_; |
my ($res,$docroot,$destdir,$settings,$dom,$user,$type,$title,$resrcfiles) = @_; |
if (!open(FILE,">$destdir/resfiles/$res.html")) { |
if (defined($$settings{url})) { |
&Apache::lonnet::logthis("IMS import error: Cannot open file - $destdir/resfiles/$res.html - $!"); |
if (!open(FILE,">$destdir/resfiles/$res.html")) { |
} else { |
&Apache::lonnet::logthis("IMS import error: Cannot open file - $destdir/resfiles/$res.html - $!"); |
push(@{$resrcfiles}, "$res.html"); |
} else { |
my $linktag = ''; |
push(@{$resrcfiles}, "$res.html"); |
if (defined($$settings{url})) { |
my $linktag = qq|<a href="$$settings{url}"|; |
$linktag = qq|<a href="$$settings{url}"|; |
|
if ($title ne '') { |
if ($title ne '') { |
$linktag .= qq|>$title</a>|; |
$linktag .= qq|>$title</a>|; |
} else { |
} else { |
$linktag .= qq|>$$settings{url}|; |
$linktag .= qq|>$$settings{url}|; |
} |
} |
} |
print FILE qq|<html> |
print FILE qq|<html> |
|
<head> |
<head> |
<title>$title</title> |
<title>$title</title> |
</head> |
</head> |
Line 5325 sub webct4_content {
|
Line 5347 sub webct4_content {
|
$linktag |
$linktag |
</body> |
</body> |
</html>|; |
</html>|; |
close(FILE); |
close(FILE); |
|
} |
} |
} |
} |
} |
|
|