--- loncom/interface/loncommon.pm 2003/06/20 14:44:06 1.106 +++ loncom/interface/loncommon.pm 2003/07/25 10:44:36 1.110 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.106 2003/06/20 14:44:06 bowersj2 Exp $ +# $Id: loncommon.pm,v 1.110 2003/07/25 10:44:36 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -549,7 +549,8 @@ sub help_open_topic { my ($topic, $text, $stayOnPage, $width, $height) = @_; $text = "" if (not defined $text); $stayOnPage = 0 if (not defined $stayOnPage); - if ($ENV{'browser.interface'} eq 'textual') { + if ($ENV{'browser.interface'} eq 'textual' || + $ENV{'environment.remote'} eq 'off' ) { $stayOnPage=1; } $width = 350 if (not defined $width); @@ -1352,9 +1353,11 @@ sub aboutmewrapper { sub syllabuswrapper { - my ($link,$un,$do,$tf)=@_; - if ($tf) { $link=''.$link.''; } - return "$link"; + my ($linktext,$coursedir,$domain,$fontcolor)=@_; + if ($fontcolor) { + $linktext=''.$linktext.''; + } + return "$linktext"; } # ---------------------------------------------------------------- Language IDs @@ -1511,6 +1514,41 @@ sub get_previous_attempt { } } +sub relative_to_absolute { + my ($url,$output)=@_; + my $parser=HTML::TokeParser->new(\$output); + my $token; + my $thisdir=$url; + my @rlinks=(); + while ($token=$parser->get_token) { + if ($token->[0] eq 'S') { + if ($token->[1] eq 'a') { + if ($token->[2]->{'href'}) { + $rlinks[$#rlinks+1]=$token->[2]->{'href'}; + } + } elsif ($token->[1] eq 'img' || $token->[1] eq 'embed' ) { + $rlinks[$#rlinks+1]=$token->[2]->{'src'}; + } elsif ($token->[1] eq 'base') { + $thisdir=$token->[2]->{'href'}; + } + } + } + $thisdir=~s-/[^/]*$--; + foreach (@rlinks) { + unless (($_=~/^http:\/\//i) || + ($_=~/^\//) || + ($_=~/^javascript:/i) || + ($_=~/^mailto:/i) || + ($_=~/^\#/)) { + my $newlocation=&Apache::lonnet::hreflocation($thisdir,$_); + $output=~s/(\"|\'|\=\s*)$_(\"|\'|\s|\>)/$1$newlocation$2/; + } + } +# -------------------------------------------------- Deal with Applet codebases + $output=~s/(\]+)(codebase\=[^\S\>]+)*([^\>]*)\>/$1.($2?$2:' codebase="'.$thisdir.'"').$3.'>'/gei; + return $output; +} + sub get_student_view { my ($symb,$username,$domain,$courseid,$target) = @_; my ($map,$id,$feedurl) = split(/___/,$symb); @@ -1522,7 +1560,8 @@ sub get_student_view { } if ($target eq 'tex') {$moreenv{'form.grade_target'} = 'tex';} &Apache::lonnet::appenv(%moreenv); - my $userview=&Apache::lonnet::ssi_body(&Apache::lonnet::clutter($feedurl)); + $feedurl=&Apache::lonnet::clutter($feedurl); + my $userview=&Apache::lonnet::ssi_body($feedurl); &Apache::lonnet::delenv('form.grade_'); foreach my $element (@elements) { $ENV{'form.grade_'.$element}=$old{$element}; @@ -1534,6 +1573,7 @@ sub get_student_view { $userview=~s/\//gi; $userview=~s/\<\/head\>//gi; $userview=~s/action\s*\=/would_be_action\=/gi; + $userview=&relative_to_absolute($feedurl,$userview); return $userview; } @@ -1681,6 +1721,17 @@ Returns: value of designparamter $which ############################################## sub designparm { my ($which,$domain)=@_; + if ($ENV{'browser.blackwhite'} eq 'on') { + if ($which=~/\.(font|alink|vlink|link)$/) { + return '#000000'; + } + if ($which=~/\.(pgbg|sidebg)$/) { + return '#FFFFFF'; + } + if ($which=~/\.tabbg$/) { + return '#CCCCCC'; + } + } if ($ENV{'environment.color.'.$which}) { return $ENV{'environment.color.'.$which}; } @@ -1745,7 +1796,11 @@ sub bodytag { my $alink=&designparm($function.'.alink',$domain); my $vlink=&designparm($function.'.vlink',$domain); my $sidebg=&designparm($function.'.sidebg',$domain); - +# Accessibility font enhance + unless ($addentries) { $addentries=''; } + if ($ENV{'browser.fontenhance'} eq 'on') { + $addentries.=' style="font-size: x-large"'; + } # role and realm my ($role,$realm) =&Apache::lonnet::plaintext((split(/\./,$ENV{'request.role'}))[0]);