version 1.46, 2009/04/23 17:33:50
|
version 1.53, 2013/08/02 12:56:26
|
Line 62 sub ims_config {
|
Line 62 sub ims_config {
|
users => 'course/x-bb-user', |
users => 'course/x-bb-user', |
); |
); |
$$cmsmap{bb6}{conference} = 'resource/x-bb-conference'; |
$$cmsmap{bb6}{conference} = 'resource/x-bb-conference'; |
%{$$cmsmap{angel}} = ( |
%{$$cmsmap{angel5}} = ( |
board => 'BOARD', |
board => 'BOARD', |
extlink => 'LINK', |
extlink => 'LINK', |
msg => 'MESSAGE', |
msg => 'MESSAGE', |
quiz => 'QUIZ', |
quiz => 'QUIZ', |
survey => 'FORM', |
survey => 'FORM', |
); |
); |
@{$$cmsmap{angel}{doc}} = ('FILE','PAGE'); |
@{$$cmsmap{angel5}{doc}} = ('FILE','PAGE'); |
%{$$cmsmap{webctce4}} = ( |
%{$$cmsmap{webctce4}} = ( |
quiz => 'webctquiz', |
quiz => 'webctquiz', |
survey => 'webctsurvey', |
survey => 'webctsurvey', |
Line 170 sub process_manifest {
|
Line 170 sub process_manifest {
|
my %toc = ( |
my %toc = ( |
bb6 => 'organization', |
bb6 => 'organization', |
bb5 => 'tableofcontents', |
bb5 => 'tableofcontents', |
angel => 'organization', |
angel5 => 'organization', |
webctce4 => 'organization', |
webctce4 => 'organization', |
webctvista4 => 'organization' |
webctvista4 => 'organization' |
); |
); |
Line 183 sub process_manifest {
|
Line 183 sub process_manifest {
|
revitm => 'Top' |
revitm => 'Top' |
); |
); |
|
|
if ($cms eq 'angel') { |
if ($cms eq 'angel5') { |
$$resources{'toplevel'}{type} = "FOLDER"; |
$$resources{'toplevel'}{type} = "FOLDER"; |
} elsif ($cms eq 'bb5' || $cms eq 'bb6') { |
} elsif ($cms eq 'bb5' || $cms eq 'bb6') { |
$$resources{'toplevel'}{type} = 'resource/x-bb-document'; |
$$resources{'toplevel'}{type} = 'resource/x-bb-document'; |
Line 203 sub process_manifest {
|
Line 203 sub process_manifest {
|
|
|
sub parse_manifest { |
sub parse_manifest { |
my ($cms,$phase,$tempdir,$xmlfile,$toc,$includedres,$includeditems,$items, |
my ($cms,$phase,$tempdir,$xmlfile,$toc,$includedres,$includeditems,$items, |
$resources,$resinfo,$hrefs,$seq) = @_; |
$resources,$resinfo,$hrefs,$seq,$requirer) = @_; |
my @state = (); |
my @state = (); |
my $itm = ''; |
my $itm = ''; |
my %contents = (); |
my %contents = (); |
my $identifier = ''; |
my $identifier = ''; |
my @allidentifiers = (); |
my @allidentifiers = (); |
my $lastitem; |
my $lastitem; |
|
my $neededby; |
my $p = HTML::Parser->new |
my $p = HTML::Parser->new |
( |
( |
xml_mode => 1, |
xml_mode => 1, |
Line 230 sub parse_manifest {
|
Line 231 sub parse_manifest {
|
if ($cms eq 'bb5') { |
if ($cms eq 'bb5') { |
$$items{$itm}{title} = $attr->{title}; |
$$items{$itm}{title} = $attr->{title}; |
} |
} |
} elsif ($cms eq 'angel') { |
} elsif ($cms eq 'angel5') { |
if ($attr->{identifierref} =~ m/^res(.+)$/) { |
if ($attr->{identifierref} =~ m/^res(.+)$/) { |
$$items{$itm}{resnum} = $1; |
$$items{$itm}{resnum} = $1; |
} |
} |
} |
} |
unless (defined(%{$$resources{$$items{$itm}{resnum}}}) ) { |
unless (%{$$resources{$$items{$itm}{resnum}}}) { |
%{$$resources{$$items{$itm}{resnum}}} = (); |
%{$$resources{$$items{$itm}{resnum}}} = (); |
} |
} |
$$resources{$$items{$itm}{resnum}}{revitm} = $itm; |
$$resources{$$items{$itm}{resnum}}{revitm} = $itm; |
Line 298 sub parse_manifest {
|
Line 299 sub parse_manifest {
|
} elsif ($cms eq 'webctvista4') { |
} elsif ($cms eq 'webctvista4') { |
$$resources{$identifier}{type} = $attr->{type}; |
$$resources{$identifier}{type} = $attr->{type}; |
$$resources{$identifier}{'webct:coType'} = $attr->{'webct:coType'}; |
$$resources{$identifier}{'webct:coType'} = $attr->{'webct:coType'}; |
} elsif ($cms eq 'angel') { |
} elsif ($cms eq 'angel5') { |
$identifier = substr($identifier,3); |
$identifier = substr($identifier,3); |
if ($attr->{href} =~ m-^_assoc/$identifier/(.+)$-) { |
if ($attr->{href} =~ m-^_assoc/$identifier/(.+)$-) { |
$$resources{$identifier}{file} = $1; |
$$resources{$identifier}{file} = $1; |
Line 308 sub parse_manifest {
|
Line 309 sub parse_manifest {
|
} |
} |
} elsif ("@state" eq "manifest resources resource file") { |
} elsif ("@state" eq "manifest resources resource file") { |
if ($$includedres{$identifier} || $phase ne 'build') { |
if ($$includedres{$identifier} || $phase ne 'build') { |
if ($cms eq 'webctvista4') { |
|
$$resources{$identifier}{file} = $attr->{href}; |
|
} |
|
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}; |
|
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 325 sub parse_manifest {
|
Line 322 sub parse_manifest {
|
&parse_manifest($cms,$phase,$tempdir,$manifestfile, |
&parse_manifest($cms,$phase,$tempdir,$manifestfile, |
$toc,$includedres,$includeditems, |
$toc,$includedres,$includeditems, |
$items,$resources,$resinfo, |
$items,$resources,$resinfo, |
$hrefs,$currseqref); |
$hrefs,$currseqref,$neededby); |
|
} else { |
|
if ($cms eq 'webctvista4') { |
|
if ($$resources{$identifier}{type} eq 'ims_qtiasiv1p2') { |
|
$neededby = $identifier; |
|
} elsif ($$resources{$identifier}{type} eq 'webcontent') { |
|
$$resources{$identifier}{usedby} = $requirer; |
|
push(@{$$hrefs{$identifier}},$attr->{href}); |
|
} |
|
$$resources{$identifier}{file} = $attr->{href}; |
|
} else { |
|
push(@{$$hrefs{$identifier}},$attr->{href}); |
|
} |
} |
} |
} elsif ($cms eq 'angel') { |
} elsif ($cms eq 'angel5') { |
if ($attr->{href} =~ m/^_assoc\\$identifier\\(.+)$/) { |
if ($attr->{href} =~ m/^_assoc\\$identifier\\(.+)$/) { |
push @{$$hrefs{$identifier}},$1; |
push @{$$hrefs{$identifier}},$1; |
} elsif ($attr->{href} =~ m/^Icons\\icon(\w+)\.gif/) { |
} elsif ($attr->{href} =~ m/^Icons\\icon(\w+)\.gif/) { |
$$resources{$identifier}{type} = $1; |
$$resources{$identifier}{type} = $1; |
} |
} |
} |
} |
} |
} |
} elsif ("@state" eq "manifest webct:ContentObject") { |
} elsif ("@state" eq "manifest webct:ContentObject") { |
foreach my $ident (@allidentifiers) { |
foreach my $ident (@allidentifiers) { |
Line 351 sub parse_manifest {
|
Line 360 sub parse_manifest {
|
} |
} |
if ($state[0] eq "manifest" && $state[1] eq "organizations" && $state[2] eq $$toc{$cms} && $state[-1] eq "title") { |
if ($state[0] eq "manifest" && $state[1] eq "organizations" && $state[2] eq $$toc{$cms} && $state[-1] eq "title") { |
if ($$includeditems{$itm} || $phase ne 'build') { |
if ($$includeditems{$itm} || $phase ne 'build') { |
if ($cms eq 'angel' || $cms eq 'bb6' || $cms eq 'webctvista4') { |
if ($cms eq 'angel5' || $cms eq 'bb6' || $cms eq 'webctvista4') { |
$$items{$itm}{title} = $text; |
$$items{$itm}{title} = $text; |
} |
} |
if ($cms eq 'webctce4') { |
if ($cms eq 'webctce4') { |
Line 360 sub parse_manifest {
|
Line 369 sub parse_manifest {
|
} |
} |
} |
} |
} |
} |
|
if ("@state" eq "manifest webct:ContentObject webct:Name") { |
|
if ($cms eq 'webctvista4') { |
|
if ($text =~ /,/) { |
|
$$resources{$identifier}{title} = (split(/,/,$text))[-1]; |
|
} else { |
|
$$resources{$identifier}{title} = $text; |
|
} |
|
} |
|
} |
}, "dtext"], |
}, "dtext"], |
end_h => |
end_h => |
[sub { |
[sub { |
Line 405 sub get_parents {
|
Line 423 sub get_parents {
|
|
|
sub target_resources { |
sub target_resources { |
my ($resources,$oktypes,$targets) = @_; |
my ($resources,$oktypes,$targets) = @_; |
foreach my $key (keys %{$resources}) { |
foreach my $key (sort(keys(%{$resources}))) { |
if ( defined($$oktypes{$$resources{$key}{type}}) ) { |
if ( defined($$oktypes{$$resources{$key}{type}}) ) { |
push @{$targets}, $key; |
push(@{$targets},$key); |
|
} elsif (defined($$resources{$key}{usedby})) { |
|
if (defined($$oktypes{$$resources{$$resources{$key}{usedby}}{type}})) { |
|
push(@{$targets},$key); |
|
} |
} |
} |
} |
} |
return; |
return; |
} |
} |
|
|
sub copy_resources { |
sub copy_resources { |
my ($context,$cms,$hrefs,$tempdir,$targets,$url,$crs,$cdom,$destdir,$timenow,$assessmentfiles,$total) = @_; |
my ($context,$cms,$hrefs,$resources,$tempdir,$targets,$url,$crs,$cdom,$destdir,$timenow,$assessmentfiles,$total) = @_; |
if ($context eq 'DOCS') { |
if ($context eq 'DOCS') { |
foreach my $key (sort keys %{$hrefs}) { |
foreach my $key (sort keys %{$hrefs}) { |
if (grep/^$key$/,@{$targets}) { |
if (grep/^$key$/,@{$targets}) { |
Line 426 sub copy_resources {
|
Line 448 sub copy_resources {
|
} |
} |
my $filename = ''; |
my $filename = ''; |
my $fpath = $timenow.'/resfiles/'.$key.'/'; |
my $fpath = $timenow.'/resfiles/'.$key.'/'; |
if ($cms eq 'angel') { |
if ($cms eq 'angel5') { |
if ($file eq 'pg'.$key.'.htm') { |
if ($file eq 'pg'.$key.'.htm') { |
next; |
next; |
} |
} |
Line 438 sub copy_resources {
|
Line 460 sub copy_resources {
|
$copyfile = $1; |
$copyfile = $1; |
} |
} |
} |
} |
|
if ($cms eq 'webctvista4') { |
|
if ($file =~ m{/\QX-WEBCT-VISTA-V0\E/.+([^.]+)$}) { |
|
$copyfile = $1; |
|
} |
|
if ($$resources{$key}{usedby}) { |
|
if ($$resources{$$resources{$key}{usedby}}{image} =~ /^\Q$copyfile\E/) { |
|
$copyfile = $$resources{$$resources{$key}{usedby}}{image}; |
|
} |
|
} |
|
} |
unless ((($cms eq 'webctce4') && ($copyfile =~ m/questionDB\.xml$/ || $copyfile =~ m/quiz_QIZ_\d+\.xml$/ || $copyfile =~ m/properties_QIZ_\d+\.xml$/)) || (($cms eq 'webctvista4') && (grep/^$key$/,@{$assessmentfiles}) && $file =~ /\.xml$/)) { |
unless ((($cms eq 'webctce4') && ($copyfile =~ m/questionDB\.xml$/ || $copyfile =~ m/quiz_QIZ_\d+\.xml$/ || $copyfile =~ m/properties_QIZ_\d+\.xml$/)) || (($cms eq 'webctvista4') && (grep/^$key$/,@{$assessmentfiles}) && $file =~ /\.xml$/)) { |
$copyfile = $fpath.$copyfile; |
$copyfile = $fpath.$copyfile; |
my $fileresult; |
my $fileresult; |
Line 452 sub copy_resources {
|
Line 484 sub copy_resources {
|
if (!-e "$destdir/resfiles") { |
if (!-e "$destdir/resfiles") { |
mkdir("$destdir/resfiles",0770); |
mkdir("$destdir/resfiles",0770); |
} |
} |
foreach my $key (sort keys %{$hrefs}) { |
foreach my $key (sort(keys(%{$hrefs}))) { |
if (grep/^$key$/,@{$targets}) { |
if (grep/^$key$/,@{$targets}) { |
foreach my $file (@{$$hrefs{$key}}) { |
foreach my $file (@{$$hrefs{$key}}) { |
$file =~ s-\\-/-g; |
$file =~ s-\\-/-g; |
if ( ($cms eq 'angel' && $file ne 'pg'.$key.'.htm') || ($cms eq 'bb5') || ($cms eq 'bb6')) { |
if ( ($cms eq 'angel5' && $file ne 'pg'.$key.'.htm') || ($cms eq 'bb5') || ($cms eq 'bb6')) { |
if (!-e "$destdir/resfiles/$key") { |
if (!-e "$destdir/resfiles/$key") { |
mkdir("$destdir/resfiles/$key",0770); |
mkdir("$destdir/resfiles/$key",0770); |
} |
} |
Line 472 sub copy_resources {
|
Line 504 sub copy_resources {
|
} |
} |
} |
} |
my $renameres; |
my $renameres; |
if ($cms eq 'angel') { |
if ($cms eq 'angel5') { |
$renameres = 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') { |
$renameres = rename("$tempdir/$key/$file","$destdir/resfiles/$key/$file"); |
$renameres = rename("$tempdir/$key/$file","$destdir/resfiles/$key/$file"); |
Line 511 sub copy_resources {
|
Line 543 sub copy_resources {
|
} 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"); |
} |
} |
|
} elsif ($cms eq 'webctvista4') { |
|
if ($file =~ m{^\QX-WEBCT-VISTA-V0\E/(.+)$}) { |
|
my $copyfile = $1; |
|
if ($copyfile =~ m{^[^/]+/[^/]+}) { |
|
my @dirs = split/\//,$copyfile; |
|
my $path = "$destdir/resfiles"; |
|
while (@dirs > 1) { |
|
$path .= '/'.$dirs[0]; |
|
if (!-e "$path") { |
|
mkdir("$path",0755); |
|
} |
|
shift @dirs; |
|
} |
|
} else { |
|
$copyfile =~ s/^[^.]+\.(\d+)_R/$1/; |
|
my ($filestem,$extension) = ($copyfile =~ /^(.+)\.(\w+)$/); |
|
if ($$resources{$key}{usedby}) { |
|
if (ref($$resources{$$resources{$key}{usedby}}{image}) eq 'ARRAY') { |
|
for (my $i=0; $i<@{$$resources{$$resources{$key}{usedby}}{image}}; $i++) { |
|
my ($img,$imgtitle); |
|
$img = $$resources{$$resources{$key}{usedby}}{image}[$i]; |
|
if (ref($$resources{$$resources{$key}{usedby}}{imagetitle}) eq 'ARRAY') { |
|
$imgtitle = $$resources{$$resources{$key}{usedby}}{imagetitle}[$i]; |
|
} |
|
if ($imgtitle =~ /\Q$extension\E/i) { |
|
$copyfile = $imgtitle; |
|
last; |
|
} elsif ($img =~ /^\Q$filestem\E/i) { |
|
$copyfile = $img.'.'.$extension; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if (-e "$tempdir/$file") { |
|
my $renameres = rename("$tempdir/$file","$destdir/resfiles/$copyfile"); |
|
if ($renameres) { |
|
if (ref($total) eq 'HASH') { |
|
$$total{'file'} ++; |
|
} |
|
} else { |
|
&Apache::lonnet::logthis("IMS import error: WebCTVista - renaming failed for file $file"); |
|
} |
|
} |
|
} |
} |
} |
} |
} |
} |
} |
Line 537 sub process_resinfo {
|
Line 615 sub process_resinfo {
|
mkdir("$destdir/resfiles",0770); |
mkdir("$destdir/resfiles",0770); |
} |
} |
} |
} |
if ($cms eq 'angel') { |
if ($cms eq 'angel5') { |
my $currboard = ''; |
my $currboard = ''; |
foreach my $key (sort keys %{$resources}) { |
foreach my $key (sort keys %{$resources}) { |
if (grep/^$key$/,@{$targets}) { |
if (grep/^$key$/,@{$targets}) { |
Line 679 sub process_resinfo {
|
Line 757 sub process_resinfo {
|
$cid = $env{'request.course.id'}; |
$cid = $env{'request.course.id'}; |
} |
} |
my $destresdir = $destdir; |
my $destresdir = $destdir; |
|
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
if ($context eq 'CSTR') { |
if ($context eq 'CSTR') { |
$destresdir =~ s|/home/$uname/public_html/|/res/$udom/$uname/|; |
$destresdir =~ s{^\Q$londocroot/priv/\E}{/res/}; |
} elsif ($context eq 'DOCS') { |
} elsif ($context eq 'DOCS') { |
$destresdir =~ s|^/home/httpd/html/userfiles|/uploaded|; |
$destresdir =~ s{^\Q$londocroot/userfiles\E}{/uploaded}; |
} |
} |
foreach my $res (sort(keys(%allquestions))) { |
foreach my $res (sort(keys(%allquestions))) { |
my $parent = $allquestions{$res}; |
my $parent = $allquestions{$res}; |
Line 764 sub build_structure {
|
Line 843 sub build_structure {
|
$seqtitle =~ s|/+|_|g; |
$seqtitle =~ s|/+|_|g; |
$seqtitle =~ s/\s+/_/g; |
$seqtitle =~ s/\s+/_/g; |
$seqtitle .= '_'.$key; |
$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 'angel5' && $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 1007 sub build_structure {
|
Line 1086 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,$title) = @_; |
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 'angel5' && $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') { |
if ($cms eq 'webctce4') { |
$title =~ s|/+|_|g; |
$title =~ s|/+|_|g; |
Line 1023 sub make_structure {
|
Line 1102 sub make_structure {
|
$$flag{$key}{page} = 0; |
$$flag{$key}{page} = 0; |
$$flag{$key}{seq} = 1; |
$$flag{$key}{seq} = 1; |
$$count{$key}{seq} ++; |
$$count{$key}{seq} ++; |
} elsif ($cms eq 'angel' && $type eq 'BOARD') { |
} elsif ($cms eq 'angel5' && $type eq 'BOARD') { |
$src = '/adm/'.$cdom.'/'.$uname.'/'.$$timestamp[$$boardnum{$res}].'/bulletinboard'; |
$src = '/adm/'.$cdom.'/'.$uname.'/'.$$timestamp[$$boardnum{$res}].'/bulletinboard'; |
$$flag{$key}{page} = 0; |
$$flag{$key}{page} = 0; |
$$flag{$key}{board} = 1; |
$$flag{$key}{board} = 1; |
$$count{$key}{board} ++; |
$$count{$key}{board} ++; |
} elsif ($cms eq 'angel' && $type eq "FILE") { |
} elsif ($cms eq 'angel5' && $type eq "FILE") { |
foreach my $file (@{$$hrefs{$res}}) { |
foreach my $file (@{$$hrefs{$res}}) { |
unless ($file eq 'pg'.$res.'.htm') { |
unless ($file eq 'pg'.$res.'.htm') { |
$src = $srcstem.'/resfiles/'.$res.'/'.$file; |
$src = $srcstem.'/resfiles/'.$res.'/'.$file; |
Line 1036 sub make_structure {
|
Line 1115 sub make_structure {
|
} |
} |
$$flag{$key}{page} = 0; |
$$flag{$key}{page} = 0; |
$$flag{$key}{file} = 1; |
$$flag{$key}{file} = 1; |
} elsif ($cms eq 'angel' && (($type eq "PAGE") || ($type eq "LINK")) ) { |
} elsif ($cms eq 'angel5' && (($type eq "PAGE") || ($type eq "LINK")) ) { |
if ($$flag{$key}{page}) { |
if ($$flag{$key}{page}) { |
if ($$count{$key}{page} == -1) { |
if ($$count{$key}{page} == -1) { |
&Apache::lonnet::logthis("IMS Angel import error in array index for page: value = -1, resource is $key, type is $type."); |
&Apache::lonnet::logthis("IMS Angel import error in array index for page: value = -1, resource is $key, type is $type."); |
Line 1117 sub process_specials {
|
Line 1196 sub process_specials {
|
pools => 'pools' |
pools => 'pools' |
); |
); |
my %seqtitles = ( |
my %seqtitles = ( |
boards => 'Course Bulletin Boards', |
boards => 'Course Discussion Boards', |
quizzes => 'Course Quizzes', |
quizzes => 'Course Quizzes', |
surveys => 'Course Surveys', |
surveys => 'Course Surveys', |
announcements => 'Course Announcements', |
announcements => 'Course Announcements', |
Line 1780 sub process_db {
|
Line 1859 sub process_db {
|
} |
} |
} |
} |
|
|
# ---------------------------------------------------------------- Add Posting to Bulletin Board |
# ---------------------------------------------------------------- Add Posting to Discussion Board |
sub addposting { |
sub addposting { |
my ($symb,$contrib,$cdom,$crs)=@_; |
my ($symb,$contrib,$cdom,$crs)=@_; |
my $status=''; |
my $status=''; |
Line 2333 sub parse_webctvista4_question {
|
Line 2412 sub parse_webctvista4_question {
|
@{$$settings{$id}{numids}} = (); |
@{$$settings{$id}{numids}} = (); |
%{$$allanswers{$id}} = (); |
%{$$allanswers{$id}} = (); |
$$settings{$id}{title} = $attr->{title}; |
$$settings{$id}{title} = $attr->{title}; |
|
$$settings{$id}{title} =~ s/\%/pct_/g; |
} |
} |
if ("@state" eq "questestinterop item presentation flow material mat_extension webct:calculated webct:var") { |
if ("@state" eq "questestinterop item presentation flow material mat_extension webct:calculated webct:var") { |
$currvar = $attr->{'webct:name'}; |
$currvar = $attr->{'webct:name'}; |
Line 2357 sub parse_webctvista4_question {
|
Line 2437 sub parse_webctvista4_question {
|
$$settings{$id}{text} .= '['.$attr->{'webct:name'}.']'; |
$$settings{$id}{text} .= '['.$attr->{'webct:name'}.']'; |
} |
} |
if ("@state" eq "questestinterop item presentation flow material matimage") { |
if ("@state" eq "questestinterop item presentation flow material matimage") { |
$$settings{$id}{image} = $attr->{uri}; |
if ($attr->{uri} =~ /\QRelativeResourceManager?contentID=\E(\d+)$/) { |
|
$$settings{$id}{image} = $1; |
|
push(@{$$resources{$res}{image}},$$settings{$id}{image}); |
|
} else { |
|
$$settings{$id}{image} = $attr->{uri}; |
|
} |
} |
} |
|
|
if ("@state" eq "questestinterop item presentation flow material mattext") { |
if ("@state" eq "questestinterop item presentation flow material mattext") { |
Line 2562 sub parse_webctvista4_question {
|
Line 2647 sub parse_webctvista4_question {
|
text_h => |
text_h => |
[sub { |
[sub { |
my ($text) = @_; |
my ($text) = @_; |
|
$text =~ s/\s*\&\s*/_and_/g; |
if ($currtexttype eq '/text/html') { |
if ($currtexttype eq '/text/html') { |
$text =~ s#(<img\ssrc=")([^"]+)">#$1../resfiles/$2#g; |
$text =~ s#(<img\ssrc=")([^"]+)">#$1../resfiles/$2#g; |
} |
} |
|
if ("@state" eq "questestinterop item presentation flow material matimage") { |
|
my $imagetitle; |
|
if ($text =~ /,/) { |
|
$imagetitle = (split(/,/,$text))[-1]; |
|
} else { |
|
$imagetitle = $text; |
|
} |
|
$$settings{$id}{imagetitle} = $imagetitle; |
|
push(@{$$resources{$res}{imagetitle}},$imagetitle); |
|
} |
if ("@state" eq "questestinterop item itemmetadata qtimetadata qtimetadatafield fieldlabel") { |
if ("@state" eq "questestinterop item itemmetadata qtimetadata qtimetadatafield fieldlabel") { |
$fieldlabel = $text; |
$fieldlabel = $text; |
} |
} |
Line 3217 sub process_assessment {
|
Line 3313 sub process_assessment {
|
($cdom,$cnum) = split/_/,$cid; |
($cdom,$cnum) = split/_/,$cid; |
} |
} |
my $destresdir = $destdir; |
my $destresdir = $destdir; |
|
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
if ($context eq 'CSTR') { |
if ($context eq 'CSTR') { |
$destresdir =~ s|/home/$uname/public_html/|/res/$udom/$uname/|; |
$destresdir =~ s{^\Q$londocroot/priv/\E}{/res/}; |
} elsif ($context eq 'DOCS') { |
} elsif ($context eq 'DOCS') { |
$destresdir =~ s|^/home/httpd/html/userfiles|/uploaded|; |
$destresdir =~ s{^\Q$londocroot/userfiles\E}{/uploaded}; |
} |
} |
if ($cms eq 'bb5') { |
if ($cms eq 'bb5') { |
&parse_bb5_assessment($res,$docroot,$container,$settings,\%allanswers,\%allchoices,\@allids); |
&parse_bb5_assessment($res,$docroot,$container,$settings,\%allanswers,\%allchoices,\@allids); |
Line 3367 sub build_problem_container {
|
Line 3464 sub build_problem_container {
|
push @{$sequencesfiles},$mapname.'.sequence'; |
push @{$sequencesfiles},$mapname.'.sequence'; |
} else { |
} else { |
$$containerdir = $pagedir.'/'.$mapname.'.page'; |
$$containerdir = $pagedir.'/'.$mapname.'.page'; |
if (!-e "$destdir/pages") { |
if (!-e "$pagedir") { |
mkdir("$destdir/pages",0770); |
mkdir("$pagedir",0770); |
} |
} |
open($fh,">$$containerdir"); |
open($fh,">$$containerdir"); |
$$total{page} ++; |
$$total{page} ++; |
Line 3388 sub build_problem_container {
|
Line 3485 sub build_problem_container {
|
$probtitle{$id} =~ s/\s+/_/g; |
$probtitle{$id} =~ s/\s+/_/g; |
$probtitle{$id} =~ s/:/_/g; |
$probtitle{$id} =~ s/:/_/g; |
$probtitle{$id} =~ s/\//_/g; |
$probtitle{$id} =~ s/\//_/g; |
$probtitle{$id} .= '_'.$id; |
if ($cms eq 'webctce4') { |
|
$probtitle{$id} .= '_'.$id; |
|
} |
} |
} |
if (($cms eq 'webctce4' && $container ne 'database') || |
if (($cms eq 'webctce4' && $container ne 'database') || |
($cms eq 'webctvista4')) { |
($cms eq 'webctvista4')) { |
Line 3462 sub write_bb5_questions {
|
Line 3561 sub write_bb5_questions {
|
my ($allids,$containerdir,$context,$settings,$dirname,$destdir,$res,$allanswers,$allchoices,$total,$newdir,$cid,$cdom,$cnum,$docroot) = @_; |
my ($allids,$containerdir,$context,$settings,$dirname,$destdir,$res,$allanswers,$allchoices,$total,$newdir,$cid,$cdom,$cnum,$docroot) = @_; |
my $qnum = 0; |
my $qnum = 0; |
my $pathstart; |
my $pathstart; |
|
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
if ($context eq 'CSTR') { |
if ($context eq 'CSTR') { |
$pathstart = '../..'; |
$pathstart = '../..'; |
} else { |
} else { |
Line 3481 sub write_bb5_questions {
|
Line 3581 sub write_bb5_questions {
|
$qnum ++; |
$qnum ++; |
my $output; |
my $output; |
my $permcontainer = $containerdir; |
my $permcontainer = $containerdir; |
$permcontainer =~ s#/home/httpd/html/userfiles#uploaded#; |
$permcontainer =~ s{^\Q$londocroot/userfiles\E}{uploaded}; |
my $symb = $cid.'.'.$permcontainer.'___'.$qnum.'___lib/templates/simpleproblem.problem.0.'; |
my $symb = $cid.'.'.$permcontainer.'___'.$qnum.'___lib/templates/simpleproblem.problem.0.'; |
my %resourcedata = (); |
my %resourcedata = (); |
for (my $i=0; $i<10; $i++) { |
for (my $i=0; $i<10; $i++) { |
Line 3838 sub write_bb5_questions {
|
Line 3938 sub write_bb5_questions {
|
|
|
sub write_webct4_questions { |
sub write_webct4_questions { |
my ($cms,$alldbquestids,$context,$settings,$dirname,$allanswers,$allchoices,$total,$cid,$cdom,$cnum,$destdir,$catinfo,$dirtitle) = @_; |
my ($cms,$alldbquestids,$context,$settings,$dirname,$allanswers,$allchoices,$total,$cid,$cdom,$cnum,$destdir,$catinfo,$dirtitle) = @_; |
|
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
my $qnum = 0; |
my $qnum = 0; |
foreach my $id (@{$alldbquestids}) { |
foreach my $id (@{$alldbquestids}) { |
$qnum ++; |
$qnum ++; |
Line 3870 sub write_webct4_questions {
|
Line 3971 sub write_webct4_questions {
|
} |
} |
} |
} |
} |
} |
$permcontainer =~ s#/home/httpd/html/userfiles#uploaded#; |
$permcontainer =~ s{\Q$londocroot/userfiles\E}{uploaded}; |
my $symb = $cid.'.'.$permcontainer.'___'.$qnum.'___lib/templates/simpleproblem.problem.0.'; |
my $symb = $cid.'.'.$permcontainer.'___'.$qnum.'___lib/templates/simpleproblem.problem.0.'; |
my %resourcedata = (); |
my %resourcedata = (); |
for (my $i=0; $i<10; $i++) { |
for (my $i=0; $i<10; $i++) { |
Line 3905 sub write_webct4_questions {
|
Line 4006 sub write_webct4_questions {
|
} |
} |
} |
} |
} |
} |
|
if (($cms eq 'webctvista4') && (defined($$settings{$id}{image}))) { |
|
my $imgsrc = '../../resfiles/'.$$settings{$id}{image}; |
|
if (defined($$settings{$id}{imagetitle})) { |
|
$imgsrc = '../../resfiles/'.$$settings{$id}{imagetitle}; |
|
} |
|
$questionimage = qq|<p><img src="$imgsrc" /></p>|; |
|
} |
if ($$settings{$id}{class} eq "paragraph") { |
if ($$settings{$id}{class} eq "paragraph") { |
my $pre_fill_answer = $$settings{$id}{PARA}{PARA}{PRE_FILL_ANSWER}; |
my $pre_fill_answer = $$settings{$id}{PARA}{PARA}{PRE_FILL_ANSWER}; |
if ($context eq 'CSTR') { |
if ($context eq 'CSTR') { |
Line 4435 $$settings{$id}{$list}{jumbledtext}[$k]
|
Line 4543 $$settings{$id}{$list}{jumbledtext}[$k]
|
$title =~ s/\s/_/g; |
$title =~ s/\s/_/g; |
$title =~ s/:/_/g; |
$title =~ s/:/_/g; |
$title =~ s/\//_/g; |
$title =~ s/\//_/g; |
$title .= '_'.$id; |
|
open(PROB,">$destdir/problems/$probdir/$title.problem"); |
open(PROB,">$destdir/problems/$probdir/$title.problem"); |
print PROB $output; |
print PROB $output; |
close PROB; |
close PROB; |
Line 4477 sub test_for_html {
|
Line 4584 sub test_for_html {
|
|
|
sub write_bb6_questions { |
sub write_bb6_questions { |
my ($allids,$containerdir,$context,$settings,$dirname,$destdir,$res,$total,$newdir,$cid,$cdom,$cnum,$docroot) = @_; |
my ($allids,$containerdir,$context,$settings,$dirname,$destdir,$res,$total,$newdir,$cid,$cdom,$cnum,$docroot) = @_; |
|
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
my $qnum = 0; |
my $qnum = 0; |
foreach my $id (@{$allids}) { |
foreach my $id (@{$allids}) { |
my $questiontext = $$settings{$id}{question}{text}; |
my $questiontext = $$settings{$id}{question}{text}; |
Line 4485 sub write_bb6_questions {
|
Line 4593 sub write_bb6_questions {
|
$qnum ++; |
$qnum ++; |
my $output; |
my $output; |
my $permcontainer = $containerdir; |
my $permcontainer = $containerdir; |
$permcontainer =~ s#/home/httpd/html/userfiles#uploaded#; |
$permcontainer =~ s{\Q$londocroot/userfiles\E}{uploaded}; |
my $symb = $cid.'.'.$permcontainer.'___'.$qnum.'___lib/templates/simpleproblem.problem.0.'; |
my $symb = $cid.'.'.$permcontainer.'___'.$qnum.'___lib/templates/simpleproblem.problem.0.'; |
my %resourcedata = (); |
my %resourcedata = (); |
for (my $i=0; $i<10; $i++) { |
for (my $i=0; $i<10; $i++) { |
Line 4979 sub process_content {
|
Line 5087 sub process_content {
|
my ($cms,$res,$context,$docroot,$destdir,$settings,$dom,$user,$resrcfiles,$packages,$hrefs) = @_; |
my ($cms,$res,$context,$docroot,$destdir,$settings,$dom,$user,$resrcfiles,$packages,$hrefs) = @_; |
my $xmlfile = $docroot.'/'.$res.".dat"; |
my $xmlfile = $docroot.'/'.$res.".dat"; |
my $destresdir = $destdir; |
my $destresdir = $destdir; |
|
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
if ($context eq 'CSTR') { |
if ($context eq 'CSTR') { |
$destresdir =~ s|/home/$user/public_html/|/res/$dom/$user/|; |
$destresdir =~ s{^\Q$londocroot/priv/\E}{/res/}; |
} elsif ($context eq 'DOCS') { |
} elsif ($context eq 'DOCS') { |
$destresdir =~ s|^/home/httpd/html/userfiles|/uploaded|; |
$destresdir =~ s{^\Q$londocroot/userfiles\E}{/uploaded}; |
} |
} |
my $filetag = ''; |
my $filetag = ''; |
if ($cms eq 'bb5') { |
if ($cms eq 'bb5') { |