--- loncom/imspackages/imsprocessor.pm 2005/05/28 01:32:32 1.21
+++ loncom/imspackages/imsprocessor.pm 2006/03/24 17:36:27 1.34
@@ -44,7 +44,17 @@ sub ims_config {
survey => 'assessment/x-bb-survey',
users => 'course/x-bb-user',
);
- %{$$cmsmap{bb6}} = %{$$cmsmap{bb5}};
+ %{$$cmsmap{bb6}} = (
+ announce => 'resource/x-bb-announcement',
+ board => 'resource/x-bb-discussionboard',
+ doc => 'resource/x-bb-document',
+ extlink => 'resource/x-bb-externallink',
+ pool => 'assessment/x-bb-qti-pool',
+ quiz => 'assessment/x-bb-qti-test',
+ staff => 'resource/x-bb-staffinfo',
+ survey => 'assessment/x-bb-survey',
+ users => 'course/x-bb-user',
+ );
$$cmsmap{bb6}{conference} = 'resource/x-bb-conference';
%{$$cmsmap{angel}} = (
board => 'BOARD',
@@ -54,7 +64,7 @@ sub ims_config {
survey => 'FORM',
);
@{$$cmsmap{angel}{doc}} = ('FILE','PAGE');
- %{$$cmsmap{webct4}} = (
+ %{$$cmsmap{webctce4}} = (
quiz => 'webctquiz',
survey => 'webctsurvey',
doc => 'webcontent'
@@ -148,7 +158,7 @@ sub process_manifest {
bb6 => 'organization',
bb5 => 'tableofcontents',
angel => 'organization',
- webct4 => 'organization',
+ webctce4 => 'organization',
);
my %contents = ();
my @state = ();
@@ -192,7 +202,7 @@ sub process_manifest {
%{$$items{$itm}} = ();
$$items{$itm}{contentscount} = 0;
@{$$items{$itm}{contents}} = ();
- if ($cms eq 'bb5' || $cms eq 'bb6' || $cms eq 'webct4') {
+ if ($cms eq 'bb5' || $cms eq 'bb6' || $cms eq 'webctce4') {
$$items{$itm}{resnum} = $attr->{identifierref};
if ($cms eq 'bb5') {
$$items{$itm}{title} = $attr->{title};
@@ -246,7 +256,7 @@ sub process_manifest {
$lastitem = $itm;
}
}
- if ($cms eq 'webct4') {
+ if ($cms eq 'webctce4') {
if (($state[-1] eq "webct:properties") && (@state > 4)) {
$$items{$itm}{properties} = $attr->{identifierref};
}
@@ -257,7 +267,7 @@ sub process_manifest {
if ($cms eq 'bb5' || $cms eq 'bb6') {
$$resources{$identifier}{file} = $attr->{file};
$$resources{$identifier}{type} = $attr->{type};
- } elsif ($cms eq 'webct4') {
+ } elsif ($cms eq 'webctce4') {
$$resources{$identifier}{type} = $attr->{type};
$$resources{$identifier}{file} = $attr->{href};
} elsif ($cms eq 'angel') {
@@ -270,7 +280,7 @@ sub process_manifest {
}
} elsif ("@state" eq "manifest resources resource file") {
if ($$includedres{$identifier} || $phase ne 'build') {
- if ($cms eq 'bb5' || $cms eq 'bb6' || $cms eq 'webct4') {
+ if ($cms eq 'bb5' || $cms eq 'bb6' || $cms eq 'webctce4') {
push @{$$hrefs{$identifier}},$attr->{href};
} elsif ($cms eq 'angel') {
if ($attr->{href} =~ m/^_assoc\\$identifier\\(.+)$/) {
@@ -293,7 +303,7 @@ sub process_manifest {
if ($cms eq 'angel' || $cms eq 'bb6') {
$$items{$itm}{title} = $text;
}
- if ($cms eq 'webct4') {
+ if ($cms eq 'webctce4') {
$$items{$itm}{title} = $text;
$$items{$itm}{title} =~ s/(<[^>]*>)//g;
}
@@ -355,14 +365,14 @@ sub target_resources {
}
sub copy_resources {
- my ($context,$cms,$hrefs,$tempdir,$targets,$url,$crs,$cdom,$chome,$destdir,$timenow) = @_;
+ my ($context,$cms,$hrefs,$tempdir,$targets,$url,$crs,$cdom,$destdir,$timenow) = @_;
if ($context eq 'DOCS') {
foreach my $key (sort keys %{$hrefs}) {
if (grep/^$key$/,@{$targets}) {
%{$$url{$key}} = ();
foreach my $file (@{$$hrefs{$key}}) {
my $source = $tempdir.'/'.$key.'/'.$file;
- if ($cms eq 'webct4') {
+ if ($cms eq 'webctce4') {
$source = $tempdir.'/'.$file;
}
my $filename = '';
@@ -374,16 +384,16 @@ sub copy_resources {
}
$file =~ s-\\-/-g;
my $copyfile = $file;
- if ($cms eq 'webct4') {
+ if ($cms eq 'webctce4') {
if ($file =~ m-/my_files/(.+)$-) {
$copyfile = $1;
}
}
- unless (($cms eq 'webct4') && ($copyfile =~ m/questionDB\.xml$/ || $copyfile =~ m/quiz_QIZ_\d+\.xml$/ || $copyfile =~ m/properties_QIZ_\d+\.xml$/)) {
+ unless (($cms eq 'webctce4') && ($copyfile =~ m/questionDB\.xml$/ || $copyfile =~ m/quiz_QIZ_\d+\.xml$/ || $copyfile =~ m/properties_QIZ_\d+\.xml$/)) {
$copyfile = $fpath.$copyfile;
my $fileresult;
if (-e $source) {
- $fileresult = &Apache::lonnet::process_coursefile('copy',$crs,$cdom,$chome,$copyfile,$source);
+ $fileresult = &Apache::lonnet::process_coursefile('copy',$crs,$cdom,$copyfile,$source);
}
}
}
@@ -417,7 +427,7 @@ sub copy_resources {
} elsif ($cms eq 'bb5' || $cms eq 'bb6') {
rename("$tempdir/$key/$file","$destdir/resfiles/$key/$file");
}
- } elsif ($cms eq 'webct4') {
+ } elsif ($cms eq 'webctce4') {
if ($file =~ m-/my_files/(.+)$-) {
my $copyfile = $1;
if ($copyfile =~ m-^[^/]+/[^/]+-) {
@@ -501,10 +511,10 @@ sub process_resinfo {
}
} elsif ($$resources{$key}{type} eq "resource/x-bb-staffinfo") {
%{$$resinfo{$key}} = ();
- &process_staff($key,$docroot,$dirname,$destdir,\%{$$resinfo{$key}},$resrcfiles);
+ &process_staff($key,$docroot,$destdir,\%{$$resinfo{$key}},$resrcfiles);
} elsif ($$resources{$key}{type} eq "resource/x-bb-externallink") {
%{$$resinfo{$key}} = ();
- &process_link($key,$docroot,$dirname,$destdir,\%{$$resinfo{$key}},$resrcfiles);
+ &process_link($key,$docroot,$destdir,\%{$$resinfo{$key}},$resrcfiles);
} elsif ($$resources{$key}{type} eq "resource/x-bb-discussionboard") {
%{$$resinfo{$key}} = ();
unless ($db_handling eq 'ignore') {
@@ -514,15 +524,15 @@ sub process_resinfo {
$board_id ++;
$board_count ++;
}
- } elsif ($$resources{$key}{type} eq "assessment/x-bb-pool") {
+ } elsif ($$resources{$key}{type} =~/assessment\/x\-bb\-(qti\-)?pool/) {
%{$$resinfo{$key}} = ();
&process_assessment($cms,$context,$key,$docroot,'pool',$dirname,$destdir,\%{$$resinfo{$key}},$total,$udom,$uname,$pagesfiles,$sequencesfiles,$randompicks,\$dbparse,$resources,$items,\%catinfo,\%qzdbsettings,$hrefs);
push @{$pools}, $key;
- } elsif ($$resources{$key}{type} eq "assessment/x-bb-quiz") {
+ } elsif ($$resources{$key}{type} =~ /assessment\/x\-bb\-(qti\-)?quiz/) {
%{$$resinfo{$key}} = ();
&process_assessment($cms,$context,$key,$docroot,'quiz',$dirname,$destdir,\%{$$resinfo{$key}},$total,$udom,$uname,$pagesfiles,$sequencesfiles,$randompicks,\$dbparse,$resources,$items,\%catinfo,\%qzdbsettings,$hrefs);
push @{$quizzes}, $key;
- } elsif ($$resources{$key}{type} eq "assessment/x-bb-survey") {
+ } elsif ($$resources{$key}{type} =~ /assessment\/x\-bb\-(qti\-)?survey/) {
%{$$resinfo{$key}} = ();
&process_assessment($cms,$context,$key,$docroot,'survey',$dirname,$destdir,\%{$$resinfo{$key}},$total,$udom,$uname,$pagesfiles,$sequencesfiles,$randompicks,\$dbparse,$resources,$items,\%catinfo,\%qzdbsettings,$hrefs);
push @{$surveys}, $key;
@@ -559,7 +569,7 @@ sub process_resinfo {
if (@{$pools}) {
$$items{'Top'}{'contentscount'} ++;
}
- } elsif ($cms eq 'webct4') {
+ } elsif ($cms eq 'webctce4') {
foreach my $key (sort keys %{$resources}) {
if (grep/^$key$/,@{$targets}) {
if ($$resources{$key}{type} eq "webcontent") {
@@ -639,7 +649,7 @@ sub build_structure {
my $resnum = $$items{$key}{resnum};
my $type = $$resources{$resnum}{type};
my $contentscount = $$items{$key}{'contentscount'};
- 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 'webct4' && $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') {
$seqtext{$key} = "
##;
-# $$settings{$id}{text} =~ s###g;
$$settings{$id}{text} =~ s##
#g;
$$settings{$id}{text} =~ s#
##g;
}
@@ -2893,8 +3136,10 @@ sub write_webct4_questions {
$resourcedata{$symb.'randomize'} = 'yes';
$resourcedata{$symb.'maxfoils'} = 10;
if ($context eq 'CSTR') {
- $output = qq|
+ unless ($$settings{$id}{class} eq 'numerical') {
+ $output = qq|
|;
+ }
}
$$total{prob} ++;
if (exists($$settings{$id}{uri})) {
@@ -3058,7 +3303,7 @@ sub write_webct4_questions {
} else {
$output .= qq|
-
+
|;
}
} else {
@@ -3249,11 +3494,34 @@ sub write_webct4_questions {
}
}
} elsif ($$settings{$id}{class} eq 'numerical') {
+ my %mathfns = (
+ 'abs' => 'abs',
+ 'acos' => 'acos',
+ 'asin' => 'asin',
+ 'atan' => 'atan',
+ 'ceil' => 'ceil',
+ 'cos' => 'cos',
+ 'exp' => 'exp',
+ 'fact' => 'factorial',
+ 'floor' => 'floor',
+ 'int' => 'int',
+ 'ln' => 'log',
+ 'log' => 'log',
+ 'max' => 'max',
+ 'min' => 'min',
+ 'round' => 'roundto',
+ 'sin' => 'sin',
+ 'sqrt' => 'sqrt',
+ 'tan' => 'tan',
+ );
+
my $scriptblock = qq|
|;
if ($context eq 'CSTR') {
- $output = $scriptblock.$output;
+ $output = "\n".$scriptblock.$output;
my $ansformat = '';
my $sigfig = '0,15';
if ($$settings{$id}{$numid}{format} eq 'sig') {
@@ -3300,7 +3566,7 @@ sub write_webct4_questions {
}
my $unitentry = '';
if ($unit ne '') {
- $unitentry = 'unit='.$unit;
+ $unitentry = 'unit="'.$unit.'"';
}
$output .= qq|
@@ -3357,7 +3623,373 @@ sub test_for_html {
}
sub write_bb6_questions {
- my ($allids,$containerdir,$context,$settings,$dirname,$destdir,$res,$allanswers,$allchoices) = @_;
+ my ($allids,$containerdir,$context,$settings,$dirname,$destdir,$res,$total,$newdir,$cid,$cdom,$cnum,$docroot) = @_;
+ my $qnum = 0;
+ foreach my $id (@{$allids}) {
+ my $questiontext = $$settings{$id}{question}{text};
+ my $question_texttype = $$settings{$id}{question}{texttype};
+ &process_html(\$questiontext,'bb6',$question_texttype,$context,$res,$dirname,$cdom,$cnum,$docroot,$destdir);
+ $qnum ++;
+ my $output;
+ my $permcontainer = $containerdir;
+ $permcontainer =~ s#/home/httpd/html/userfiles#uploaded#;
+ my $symb = $cid.'.'.$permcontainer.'___'.$qnum.'___lib/templates/simpleproblem.problem.0.';
+ my %resourcedata = ();
+ for (my $i=0; $i<10; $i++) {
+ my $iter = $i+1;
+ $resourcedata{$symb.'text'.$iter} = "";
+ $resourcedata{$symb.'value'.$iter} = "unused";
+ $resourcedata{$symb.'position'.$iter} = "random";
+ }
+ $resourcedata{$symb.'randomize'} = 'yes';
+ $resourcedata{$symb.'maxfoils'} = 10;
+ if ($context eq 'CSTR') {
+ $output = qq|
+|;
+ }
+ $$total{prob} ++;
+ $questiontext .= &add_images_links('question',$context,$settings,$id,$dirname,$res);
+ if ($$settings{$id}{class} eq "Essay") {
+ if ($context eq 'CSTR') {
+ $output .= qq|$questiontext
+
+
+
+|;
+ } else {
+ $resourcedata{$symb.'questiontext'} = $questiontext;
+ $resourcedata{$symb.'hiddenparts'} = '!essay';
+ $resourcedata{$symb.'questiontype'} = 'essay';
+ }
+ } else {
+ if ($context eq 'CSTR') {
+ $output .= qq|$questiontext\n|;
+ } else {
+ $resourcedata{$symb.'questiontext'} = $questiontext;
+ }
+ my $numfoils = @{$$settings{$id}{answers}};
+ if (($$settings{$id}{class} eq 'Multiple Choice') ||
+ ($$settings{$id}{class} eq 'True/False')) {
+ if ($context eq 'CSTR') {
+ $output .= qq|
+
+
+|;
+ } else {
+ $resourcedata{$symb.'hiddenparts'} = '!radio';
+ $resourcedata{$symb.'questiontype'} = 'radio';
+ $resourcedata{$symb.'maxfoils'} = $numfoils;
+ }
+ for (my $k=0; $k<$numfoils; $k++) {
+ my $iter = $k+1;
+ my $answer_id = $$settings{$id}{answers}[$k];
+ my $answer_text = $$settings{$id}{$answer_id}{text};
+ my $texttype = $$settings{$id}{$answer_id}{texttype};
+ &process_html(\$answer_text,'bb6',$texttype,$context,$res,$dirname,$cdom,$cnum,$docroot,$destdir);
+ $answer_text .= &add_images_links('response',$context,$settings,$id,$dirname,$res);
+ $output .= " '."\n";
+ $resourcedata{$symb.'text'.$iter} = $answer_text;
+ }
+ if ($context eq 'CSTR') {
+ chomp($output);
+ $output .= qq|
+
+
+
+
+
+
+
+
+
+|;
+ }
+ } elsif ($$settings{$id}{class} eq 'Multiple Answer') {
+ if ($context eq 'CSTR') {
+ $output .= qq|
+
+
+|;
+ } else {
+ $resourcedata{$symb.'newopt'} = '';
+ $resourcedata{$symb.'delopt'} = '';
+ $resourcedata{$symb.'options'} = "('True','False')";
+ $resourcedata{$symb.'hiddenparts'} = '!option';
+ $resourcedata{$symb.'questiontype'} = 'option';
+ $resourcedata{$symb.'maxfoils'} = $numfoils;
+ }
+ for (my $k=0; $k<$numfoils; $k++) {
+ my $iter = $k+1;
+ my $answer_id = $$settings{$id}{answers}[$k];
+ my $answer_text = $$settings{$id}{$answer_id}{text};
+ my $texttype = $$settings{$id}{$answer_id}{texttype};
+ &process_html(\$answer_text,'bb6',$texttype,$context,$res,$dirname,$cdom,$cnum,$docroot,$destdir);
+ $answer_text .= &add_images_links('response',$context,$settings,$id,$dirname,$res);
+
+ $output .= " \n";
+ $resourcedata{$symb.'text'.$iter} = $answer_text;
+ }
+ if ($context eq 'CSTR') {
+ chomp($output);
+ $output .= qq|
+
+
+
+
+
+
+
+
+
+|;
+ }
+ } elsif ($$settings{$id}{class} eq 'Ordering') {
+ my @allorder = ();
+ if ($context eq 'CSTR') {
+ $output .= qq|
+
+
+|;
+ } else {
+ $resourcedata{$symb.'newopt'} = '';
+ $resourcedata{$symb.'delopt'} = '';
+ $resourcedata{$symb.'hiddenparts'} = '!option';
+ $resourcedata{$symb.'questiontype'} = 'option';
+ $resourcedata{$symb.'maxfoils'} = $numfoils;
+ }
+ for (my $k=0; $k<$numfoils; $k++) {
+ my $answer_id = $$settings{$id}{answers}[$k];
+ my $answer_text = $$settings{$id}{$answer_id}{text};
+ my $texttype = $$settings{$id}{$answer_id}{texttype};
+ &process_html(\$answer_text,'bb6',$texttype,$context,$res,$dirname,$cdom,$cnum,$docroot,$destdir);
+ $answer_text .= &add_images_links('response',$context,$settings,$id,$dirname,$res);
+ my $iter = $k+1;
+ if ($context eq 'CSTR') {
+ $output .= " ".$answer_text."\n";
+ } else {
+ $resourcedata{$symb.'text'.$iter} = $answer_text;
+ $resourcedata{$symb.'value'.$iter} = $$settings{$id}{$answer_id}{order};
+ if (!grep/^$$settings{$id}{$answer_id}{order}$/,@allorder) {
+ push(@allorder,$$settings{$id}{$answer_id}{order});
+ }
+ }
+ }
+ if ($context eq 'CSTR') {
+ chomp($output);
+ $output .= qq|
+
+
+|;
+ } else {
+ @allorder = sort {$a <=> $b} @allorder;
+ $resourcedata{$symb.'options'} = "('".join("','",@allorder)."')";
+ }
+ } elsif ($$settings{$id}{class} eq 'Fill in the Blank') {
+ my $numerical = 1;
+ if ($context eq 'DOCS') {
+ $numerical = 0;
+ } else {
+ for (my $k=0; $k<@{$$settings{$id}{correctanswer}}; $k++) {
+ if ($$settings{$id}{correctanswer}[$k] =~ m/([^\d\.]|\.\.)/) {
+ $numerical = 0;
+ }
+ }
+ }
+ if ($numerical) {
+ my $numans;
+ my $tol;
+ if (@{$$settings{$id}{correctanswer}} == 1) {
+ $tol = 5;
+ $numans = $$settings{$id}{correctanswer}[0];
+ } else {
+ my $min = $$settings{$id}{correctanswer}[0];;
+ my $max = $min;
+ for (my $k=1; $k<@{$$settings{$id}{correctanswer}}; $k++) {
+ if ($$settings{$id}{correctanswer}[$k] <= $min) {
+ $min = $$settings{$id}{correctanswer}[$k];
+ }
+ if ($$settings{$id}{correctanswer}[$k] >= $max) {
+ $max = $$settings{$id}{correctanswer}[$k];
+ }
+ }
+ $numans = ($max + $min)/2;
+ $tol = 100*($max - $min)/($numans*2);
+ $tol = 5;
+ }
+ if ($context eq 'CSTR') {
+ $output .= qq|
+
+
+
+
+
+
+
+
+
+
+
+
+|;
+ }
+ } else {
+ if ($context eq 'DOCS') {
+ $resourcedata{$symb.'hiddenparts'} = '!string';
+ $resourcedata{$symb.'questiontype'} = 'string';
+ $resourcedata{$symb.'maxfoils'} = 1;
+ $resourcedata{$symb.'hiddenparts'} = '!string';
+ $resourcedata{$symb.'stringtype'} = 'ci';
+ $resourcedata{$symb.'stringanswer'} = $$settings{$id}{correctanswer}[0];
+ } else {
+ if (@{$$settings{$id}{correctanswer}} == 1) {
+ $output .= qq|
+
+
+
+
+
+
+
+
+
+
+
+|;
+ } else {
+ my @answertext = ();
+ for (my $k=0; $k<@{$$settings{$id}{correctanswer}}; $k++) {
+ my $answer_text = $$settings{$id}{correctanswer}[$k];
+ $answer_text =~ s/\|/\|/g;
+ push @answertext, $answer_text;
+ }
+ my $regexpans = join('|',@answertext);
+ $regexpans = '/^('.$regexpans.')\b/';
+ $output .= qq|
+
+
+
+
+
+
+
+
+
+
+
+|;
+ }
+ }
+ }
+ } elsif ($$settings{$id}{class} eq "Matching") {
+ my @allmatchers = ();
+ my %matchtext = ();
+ if ($context eq 'CSTR') {
+ $output .= qq|
+
+
+
+|;
+ } else {
+ $resourcedata{$symb.'newopt'} = '';
+ $resourcedata{$symb.'delopt'} = '';
+ $resourcedata{$symb.'hiddenparts'} = '!option';
+ $resourcedata{$symb.'questiontype'} = 'option';
+ $resourcedata{$symb.'maxfoils'} = $numfoils;
+ }
+ for (my $k=0; $k<$$settings{$id}{allchoices}; $k++) {
+ my $choice_id = 'rightmatch'.$k;
+ my $choice_text = $$settings{$id}{$choice_id}{text};
+ my $texttype = $$settings{$id}{$choice_id}{texttype};
+ my $choice_plaintext = &remove_html($choice_text);
+ &process_html(\$choice_text,'bb6',$texttype,$context,$res,$dirname,$cdom,$cnum,$docroot,$destdir);
+ $choice_text .= &add_images_links($choice_id,$context,$settings,$id,$dirname,$res);
+ push(@allmatchers,$choice_plaintext);
+ if ($context eq 'CSTR') {
+ $output .= qq|
+-
+$choice_text
+
+ |;
+ }
+ }
+ if ($context eq 'CSTR') {
+ $output .= qq|
+
+|;
+ }
+ for (my $k=0; $k<$numfoils; $k++) {
+ my $answer_id = $$settings{$id}{answers}[$k];
+ my $answer_text = $$settings{$id}{$answer_id}{text};
+ my $texttype = $$settings{$id}{$answer_id}{texttype};
+ &process_html(\$answer_text,'bb6',$texttype,$context,$res,$dirname,$cdom,$cnum,$docroot,$destdir);
+ $answer_text .= &add_images_links($answer_id,$context,$settings,$id,$dirname,$res);
+ if ($context eq 'CSTR') {
+ $output .= '
+
+ '.$answer_text.'
+
+';
+ } else {
+ my $iter = $k+1;
+ $resourcedata{$symb.'value'.$iter} = "$allmatchers[$$settings{$id}{$$settings{$id}{$answer_id}{correctanswer}}{order}]";
+ $resourcedata{$symb.'text'.$iter} = $answer_text;
+ }
+ }
+ if ($context eq 'CSTR') {
+ $output .= qq|
+
+
+|;
+ } else {
+ $resourcedata{$symb.'options'} = "('".join("','",@allmatchers)."')";
+ }
+ }
+ }
+ if ($context eq 'CSTR') {
+
+ $output .= qq|
+
+ $$settings{$id}{solutionfeedback}{text}
+
+
+|;
+ my $title = $$settings{title};
+ $title =~ s/\s/_/g;
+ $title =~ s/\W//g;
+ $title .= '_'.$id;
+ open(PROB,">:utf8", "$newdir/$title.problem");
+ print PROB $output;
+ close PROB;
+ } else {
+# put %resourcedata;
+ my $reply=&Apache::lonnet::cput
+ ('resourcedata',\%resourcedata,$cdom,$cnum);
+ }
+ }
}
sub retrieve_image {
@@ -3379,12 +4011,11 @@ sub retrieve_image {
print $fh $contents;
close($fh);
if ($context eq 'DOCS') {
- my $chome = &Apache::lonnet::homeserver($cname,$cdom);
my $copyfile = $dirname.'/'.$filename;
my $source = "$docroot/$res/webimages/$filename";
my $fileresult;
if (-e $source) {
- $fileresult = &Apache::lonnet::process_coursefile('copy',$cname,$cdom,$chome,$copyfile,$source);
+ $fileresult = &Apache::lonnet::process_coursefile('copy',$cname,$cdom,$copyfile,$source);
}
return $fileresult;
} elsif ($context eq 'CSTR') {
@@ -3944,5 +4575,59 @@ $linktag
}
}
+sub process_html {
+ my ($text,$caller,$html_cond,$context,$res,$dirname,$cdom,$cnum,$docroot,$destdir) = @_;
+ my $pathstart;
+ if ($context eq 'CSTR') {
+ $pathstart = '../..';
+ } else {
+ $pathstart = $dirname;
+ }
+ if ($caller eq 'bb5') {
+ if ($html_cond eq 'true') {
+ $$text = &HTML::Entities::decode($$text);
+ }
+ } elsif ($caller eq 'bb6') {
+ if ($html_cond eq 'HTML') {
+ $$text = &HTML::Entities::decode($$text);
+ }
+ }
+ if ($$text =~ m#]*>#) {
+ if (&retrieve_image($context,$res,$dirname,$cdom,$cnum,$docroot,$destdir,$1,$2) eq 'ok') {
+ $$text =~ s#(]*>)#$1$pathstart/resfiles/$res/webimages/$3$4#g;
+ }
+ }
+ $$text =~ s#(]+)/*>#$1 />#gi;
+ $$text =~ s#
#
#g;
+ return;
+}
+
+sub add_images_links {
+ my ($type,$context,$settings,$id,$dirname,$res) = @_;
+ my ($image,$imglink,$url,$pathstart);
+ if ($context eq 'CSTR') {
+ $pathstart = '../..';
+ } else {
+ $pathstart = $dirname;
+ }
+ if ((defined($$settings{$id}{$type}{image})) && ($$settings{$id}{$type}{image} ne '')) {
+ if ( $$settings{$id}{$type}{style} eq 'Inline' ) {
+ $image = qq|
|;
+ } else {
+ $imglink = qq|
$$settings{$id}{$type}{label}
|;
+ }
+ }
+ if ((defined($$settings{$id}{$type}{link})) && ($$settings{$id}{$type}{link} ne '' )) {
+ $url = qq|
$$settings{$id}{$type}{linkname}
|;
+ }
+ return $image.$imglink.$url;
+}
+
+sub remove_html {
+ my ($choice_text) = @_;
+ return $choice_text;
+}
+
+
1;
__END__