version 1.51, 2007/10/08 23:02:57
|
version 1.62, 2023/03/25 18:38:25
|
Line 26
|
Line 26
|
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
|
|
|
|
|
|
package Apache::outputtags; |
package Apache::outputtags; |
|
|
use strict; |
use strict; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
|
use LONCAPA::LWPReq; |
use POSIX qw(strftime); |
use POSIX qw(strftime); |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::outputtags',('displayduedate','displaytitle','displayweight','displaystudentphoto')); |
&Apache::lonxml::register('Apache::outputtags',('displayduedate','displaytitle','displayweight','displaystudentphoto')); |
} |
} |
# Empties the hash of tags that have already been displayed |
|
# that should only be displayed once. |
################################ utilities ########################### |
|
|
|
# |
|
# Does a simple substitution of a tab when the opening tag can |
|
# be replaced by a fixed string.. and same for the closing tag. |
|
# Parameters: |
|
# $input - String in in which to do the substitutions. |
|
# $tag - name of tag without the <>'s e.g. sub for <sub></sub> |
|
# $opening - What to replace <$tag> with |
|
# $closing - What to replace </$tag> with. |
|
# Returns: |
|
# Input string appropriately substituted. |
|
# |
|
sub substitute_tag { |
|
my ($input, |
|
$tag, |
|
$opening, |
|
$closing) = @_; |
|
|
|
$input =~ s/<$tag>/$opening/gi; |
|
$input =~ s/<\/$tag>/$closing/gi; |
|
|
|
return $input; |
|
} |
|
|
|
# |
|
# Substitutes the simple formatting tags in a string |
|
# Parameters: |
|
# $string - input string. |
|
# Returns |
|
# Result of string after simple substitutions |
|
# Tags we handle are: |
|
# <sub>, <sup> <em> |
# |
# |
|
sub substitute_simple_tags_latex { |
|
my ($string) = @_; |
|
|
|
# restore the <>'s: |
|
|
|
$string =~ s/\\ensuremath\{<}/</g; |
|
$string =~ s/\\ensuremath\{>}/>/g; |
|
|
|
|
|
# Substitute the tags: |
|
|
|
$string = &substitute_tag($string, "sub", '\ensuremath{_', '}'); |
|
$string = &substitute_tag($string, 'sup', '\ensuremath{^', '}'); |
|
$string = &substitute_tag($string, 'em', '\em{', '}'); |
|
|
|
|
|
# Escape the remaining <>'s again: |
|
|
|
$string =~ s/</\\ensuremath{<}/g; |
|
$string =~ s/>/\\ensuremath{>}/g; |
|
|
|
|
|
|
|
return $string; |
|
} |
|
|
|
################################ The parser ########################## |
|
|
sub initialize_outputtags { |
sub initialize_outputtags { |
%Apache::outputtags::showonce=(); |
%Apache::outputtags::showonce=(); |
} |
} |
|
|
|
|
|
|
sub start_displayduedate { |
sub start_displayduedate { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $result; |
my $result; |
Line 105 sub start_displayduedate {
|
Line 169 sub start_displayduedate {
|
my $duetext = &Apache::lonnavmaps::timeToHumanString($date, '', $format); |
my $duetext = &Apache::lonnavmaps::timeToHumanString($date, '', $format); |
if (lc($style) !~ 'plain') { |
if (lc($style) !~ 'plain') { |
# The due date will be put in a box. |
# The due date will be put in a box. |
|
# at the start of the line to ensure it won't overlap |
$result = '\framebox{' |
# the 1 col boundary. |
|
|
|
$result = '\vspace{1.0 ex} \framebox{' |
.&mt('Due').' '.$duetext.'}'; |
.&mt('Due').' '.$duetext.'}'; |
} else { |
} else { |
$result = &mt('Due') . ' '.$duetext; |
$result = &mt('Due') . ' '.$duetext; |
Line 150 sub start_displaytitle {
|
Line 216 sub start_displaytitle {
|
$result.=&Apache::edit::end_table(); |
$result.=&Apache::edit::end_table(); |
} elsif ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { |
} elsif ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { |
$name=&Apache::lonxml::latex_special_symbols($name); |
$name=&Apache::lonxml::latex_special_symbols($name); |
|
$name = &substitute_simple_tags_latex($name); |
if (lc($style) !~ 'plain') { |
if (lc($style) !~ 'plain') { |
$result='\vskip 0 mm\noindent\textbf{'.$name.'}\vskip 0 mm'; |
$result='\vskip 0 mm\noindent\textbf{'.$name.'}\vskip 0 mm'; |
} else { |
} else { |
Line 242 sub start_displaystudentphoto {
|
Line 309 sub start_displaystudentphoto {
|
my $args; |
my $args; |
my $width=&Apache::lonxml::get_param('width',$parstack,$safeeval); |
my $width=&Apache::lonxml::get_param('width',$parstack,$safeeval); |
if ($width) { $args.=" width=\"$width\" "; } |
if ($width) { $args.=" width=\"$width\" "; } |
my $height=&Apache::lonxml::get_param('heigth',$parstack,$safeeval); |
my $height=&Apache::lonxml::get_param('height',$parstack,$safeeval); |
if ($height) { $args.=" height=\"$height\" "; } |
if ($height) { $args.=" height=\"$height\" "; } |
my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval); |
my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval); |
if ($align) { $args.=" align=\"$align\" "; } |
if ($align) { $args.=" align=\"$align\" "; } |
Line 250 sub start_displaystudentphoto {
|
Line 317 sub start_displaystudentphoto {
|
} |
} |
if ($target eq 'tex' && $env{'request.role'} =~ /^cc/) { |
if ($target eq 'tex' && $env{'request.role'} =~ /^cc/) { |
my $url=&Apache::lonnet::studentphoto($domain,$user,"eps"); |
my $url=&Apache::lonnet::studentphoto($domain,$user,"eps"); |
my $ua=new LWP::UserAgent; |
my $uhome=&Apache::lonnet::homeserver($user,$domain); |
my $request=new HTTP::Request('GET',$url); |
my $request=new HTTP::Request('GET',$url); |
my $response=$ua->request($request); |
my $response=&LONCAPA::LWPReq::makerequest($uhome,$request,'','','',1); |
if ($response->is_success) { |
if ($response->is_success) { |
my $file=$user."_".$domain."_studentphoto.eps"; |
my $file=$user."_".$domain."_studentphoto.eps"; |
open(FILE,">".$Apache::lonnet::perlvar{'lonPrtDir'}."/$file"); |
open(FILE,">",$Apache::lonnet::perlvar{'lonPrtDir'}."/$file"); |
print FILE $response->content; |
print FILE $response->content; |
close(FILE); |
close(FILE); |
my $width_param=&Apache::londefdef::image_size($Apache::lonnet::perlvar{'lonPrtDir'}."/$file",'0.3',$parstack,$safeeval); |
my $width_param=&Apache::londefdef::image_size($Apache::lonnet::perlvar{'lonPrtDir'}."/$file",'0.3',$parstack,$safeeval); |
Line 277 sub end_displaystudentphoto {
|
Line 344 sub end_displaystudentphoto {
|
|
|
1; |
1; |
__END__ |
__END__ |
|
|
|
|
|
=head1 NAME |
|
|
|
Apache::outputtags; |
|
|
|
=head1 SYNOPSIS |
|
|
|
Handles tags associated with output. Seems to |
|
relate to due dates of the assignment. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
=head1 SUBROUTINES |
|
|
|
=over |
|
|
|
=item start_displayduedate() |
|
|
|
=item initialize_outputtags() |
|
|
|
Empties the hash of tags that have already been displayed that should only be displayed once. |
|
|
|
=item end_displayduedate() |
|
|
|
=item start_displaytitle() |
|
|
|
=item end_displaytitle() |
|
|
|
=item multipart() |
|
|
|
=item start_displayweight() |
|
|
|
=item end_displayweight() |
|
|
|
=item start_displaystudentphoto() |
|
|
|
=item end_displaystudentphoto() |
|
|
|
|
|
=back |
|
|
|
=cut |