--- loncom/interface/lontemplate.pm 2008/11/28 10:56:31 1.4
+++ loncom/interface/lontemplate.pm 2025/01/28 19:49:20 1.52
@@ -1,7 +1,7 @@
# The LearningOnline Network
# "Template" Functions to generate html output
#
-# $Id: lontemplate.pm,v 1.4 2008/11/28 10:56:31 bisitz Exp $
+# $Id: lontemplate.pm,v 1.52 2025/01/28 19:49:20 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -26,39 +26,187 @@
# http://www.lon-capa.org/
#
-
package Apache::lontemplate;
use strict;
+use utf8;
use Apache::Constants qw(:common);
use Apache::loncommon;
use Apache::lonnet;
+use Apache::lonxml;
+use Apache::lonspeller;
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) = @_;
+ $r->print('
');
- $r->print('
'.$topic.'
');
- $r->print('
'.$content.'
');
+}
+
+sub send_message {
+ my ($r,$cnum,$cdom) = @_;
+ my $linktext = &mt('Send message to [_1]',
+ &Apache::loncommon::plainname($cnum,$cdom));
+ my $image = qq{

};
+ return &Apache::loncommon::messagewrapper($image,$cnum,$cdom).' '.&Apache::loncommon::messagewrapper($linktext,$cnum,$cdom);
+}
+
+sub print_template {
+ my ($r,$topic,$content, $allowed,$boxclass) = @_;
+ $r->print('
');
+ $r->print('
'.$topic.'
');
+ $r->print($content);
$r->print('');
}
-sub print_editbox_template
-{
- my ($r,$content,$field) = @_;
- $r->print('
');
+sub print_start_template {
+ my ($r,$topic,$boxclass,$id,$display) = @_;
+ my $idattrib;
+ if ($id ne '') {
+ $idattrib = ' id="'.$id.'"';
+ }
+ $r->print('
');
+ $r->print('
'.$topic.'
');
+}
+
+sub print_end_template {
+ my ($r) = @_;
+ $r->print('');
+}
+
+sub print_editbox_template {
+ my ($r,$content,$field,$fieldname) = @_;
+ my $labeltext = &HTML::Entities::encode(&mt('Edit [_1]',$fieldname),'"&<>');
+ $r->print('
'."\n");
+ &print_saveall_template($r);
+}
+
+sub print_textarea_template {
+ my ($r, $content, $field, $fieldname, $wysiwyg) = @_;
+ my $labeltext = &HTML::Entities::encode(&mt('Edit [_1]',$fieldname),'"&<>');
+ $r->print('
');
+}
+
+sub print_saveall_template {
+ my ($r) = @_;
+ $r->print('
');
+}
+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};
+ 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("
");
+ &print_textarea_template($r, $data{$field},
+ $field, $fields{$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;