--- loncom/interface/lontemplate.pm 2009/05/30 21:52:30 1.35 +++ loncom/interface/lontemplate.pm 2013/05/09 05:47:57 1.48 @@ -1,7 +1,7 @@ # The LearningOnline Network # "Template" Functions to generate html output # -# $Id: lontemplate.pm,v 1.35 2009/05/30 21:52:30 bisitz Exp $ +# $Id: lontemplate.pm,v 1.48 2013/05/09 05:47:57 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,11 +26,11 @@ # http://www.lon-capa.org/ # - package Apache::lontemplate; use strict; +use utf8; use Apache::Constants qw(:common); use Apache::loncommon; use Apache::lonnet; @@ -40,9 +40,17 @@ use Apache::lontexconvert; use Apache::lonfeedback; use Apache::lonrss(); use Apache::lonlocal; +use Apache::lonhtmlgateway; use Apache::lonmsgdisplay(); use HTML::Entities(); +use constant { + RICH_TEXT_ALWAYS_ON => 'LC_richAlwaysOn', + RICH_TEXT_ALWAYS_OFF => 'LC_richAlwaysOff', + RICH_TEXT_DEFAULT_ON => 'LC_richDefaultOn', + RICH_TEXT_DETECT_HTML => 'LC_richDetectHtml', + RICH_TEXT_DEFAULT_OFF => 'LC_richDefaultOff' +}; sub start_columnSection { my ($r) = @_; @@ -62,35 +70,29 @@ sub print_aboutme_content_template { foreach my $field (sort(keys(%syllabusfields))) { if (($syllabus{$field}) || ($allowed)) { my $message=$syllabus{$field}; - &Apache::lonfeedback::newline_to_br(\$message); - $message - =~s/(http\:\/\/[^\s]+)/\\$1\<\/tt\>\<\/a\>/g; + if (!&Apache::lonfeedback::contains_block_html($message)) { + &Apache::lonfeedback::newline_to_br(\$message); + } + $message=&Apache::lonhtmlcommon::raw_href_to_link($message); if ($allowed) { $message=&Apache::lonspeller::markeduptext($message); } $message=&Apache::lontexconvert::msgtexconverted($message); if ($target ne 'tex') { - if ($allowed) { - $r->print('

'); - } - if($field eq 'aaa_contactinfo') { $r->print('

 
'); - &print_template($r,$syllabusfields{$field},$message,$allowed,'LC_ContentBoxSpecial'); + &print_template($r,$syllabusfields{$field},$message,$allowed,'LC_Box'); } else { - &print_template($r,$syllabusfields{$field},$message,$allowed,'LC_ContentBoxSpecial'); + &print_template($r,$syllabusfields{$field},$message,$allowed,'LC_Box'); } + if($allowed) { + &print_editbox_template($r,$syllabus{$field},$field); + } } else { $r->print('\\\\\textbf{'.$syllabusfields{$field}.'}\\\\'. &Apache::lonxml::xmlparse($r,'tex',$message).'\\\\'); } - if ($allowed) { - &print_editbox_template($r,$syllabus{$field},$field); - if ($target ne 'tex') { - $r->print('

'); - } - } } } @@ -98,10 +100,10 @@ sub print_aboutme_content_template { sub send_message { my ($r,$cnum,$cdom) = @_; - my $s; - my $image = qq{}; - $s=&Apache::loncommon::messagewrapper($image,$cnum,$cdom).' '.&Apache::loncommon::messagewrapper(&mt('Send me a message'),$cnum,$cdom); - return $s; + my $linktext = &mt('Send message to [_1]', + &Apache::loncommon::plainname($cnum,$cdom)); + my $image = qq{Send message symbol}; + return &Apache::loncommon::messagewrapper($image,$cnum,$cdom).' '.&Apache::loncommon::messagewrapper($linktext,$cnum,$cdom); } sub print_template { @@ -113,8 +115,12 @@ sub print_template { } sub print_start_template { - my ($r,$topic,$boxclass) = @_; - $r->print('
'); + my ($r,$topic,$boxclass,$id,$display) = @_; + my $idattrib; + if ($id ne '') { + $idattrib = ' id="'.$id.'"'; + } + $r->print('
'); $r->print('

'.$topic.'

'); } @@ -126,28 +132,80 @@ sub print_end_template { sub print_editbox_template { my ($r,$content,$field) = @_; $r->print('
'); + &HTML::Entities::encode($content,'"&<>'). + '
'."\n"); + &print_saveall_template($r); } -# Functionslist: List of functions -# Typically used to display a list of available functions at top of page -sub start_functionslist { - my($legendtext)=@_; - $legendtext=&mt('Functions') if !$legendtext; - return '
'.$legendtext.'' - .'
    '; +sub print_textarea_template { + my ($r, $content, $field, $wysiwyg) = @_; + $r->print('
    '); } -sub item_functionslist { - my($content) = @_; - return '
  • '.$content.'
  • '; +sub print_saveall_template { + my ($r) = @_; + $r->print(''); } -sub end_functionslist { - my($r)=@_; - return '
'; +sub print_template_fields { + my ($r, $data_ref, $fields_ref, $target, $allowed, $default_rich_text, $custom_handlers_ref, $group, + $displayref,$noshowref) = @_; + my @html_ids = (); + my %data = %{$data_ref}; + my %fields = %{$fields_ref}; + my %custom_handlers = %{$custom_handlers_ref}; + my (%displays,%noshow); + if (ref($displayref) eq 'HASH') { + %displays = %{$displayref}; + } + if (ref($noshowref) eq 'HASH') { + %noshow = %{$noshowref}; + } + foreach my $field (sort(keys(%fields))) { + my $message = $data{$field} if (($data{$field}=~/\w/) || ($allowed)); + my $legacy = 1; + my $display = $displays{$field}; + my $hidden; + unless ($allowed) { + next if ($noshow{$field}); + } + my $gateway = Apache::lonhtmlgateway->new($target); + $message = &Encode::decode('utf8', $message); + $message = $gateway->process_outgoing_html($message, $legacy); + if ((%custom_handlers) && ($custom_handlers{$field})) { + $custom_handlers{$field}->($r, $field, $message, $group, $data_ref, $fields_ref, $target, $allowed, $display); + } else { + if (($data{$field}=~/\w/) || ($allowed)) { + if ($target ne 'tex') { + #output of syllabusfields will be generated here. + &Apache::lontemplate::print_start_template($r,$fields{$field},'LC_Box','box_'.$field,$display); + $r->print($message); + if ($allowed) { + $r->print("
"); + &Apache::lontemplate::print_textarea_template($r, $data{$field}, + $field, $default_rich_text); + &print_saveall_template($r); + $r->print("
"); + } + &Apache::lontemplate::print_end_template($r); + } else { + my $safeinit; + if ($fields{$field}=~/\w/) { + $r->print(&Apache::lonxml::xmlparse($r,'tex','

'.$fields{$field}.'

')); + } else { + $r->print(&Apache::lonxml::xmlparse($r,'tex','
')); + } + $r->print(&Apache::lonxml::xmlparse($r,'tex',$message)); + } + push(@html_ids,$field); + } + } + undef $gateway; + } + + return @html_ids; } 1; 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.