--- loncom/homework/structuretags.pm 2002/10/14 15:43:06 1.125
+++ loncom/homework/structuretags.pm 2011/11/14 00:20:39 1.497
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.125 2002/10/14 15:43:06 sakharuk Exp $
+# $Id: structuretags.pm,v 1.497 2011/11/14 00:20:39 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -25,28 +25,67 @@
#
# http://www.lon-capa.org/
#
-# 2/19 Guy
-# 6/26/2001 fixed extra web display at end of tags
-# 8/17,8/18,8/20 Gerd Kortemeyer
+###
+
+=pod
+
+=head1 NAME
+
+Apache::structuretags
+
+=head1 SYNOPSIS
+
+
+This is part of the LearningOnline Network with CAPA project
+described at http://www.lon-capa.org.
+
+
+=head1 NOTABLE SUBROUTINES
+
+=over
+
+=item
+
+=back
+
+=cut
+
package Apache::structuretags;
use strict;
use Apache::lonnet;
use Apache::File();
-
+use Apache::lonmenu;
+use Apache::lonlocal;
+use Apache::lonxml;
+use Apache::londefdef;
+use Apache::lonenc();
+use Time::HiRes qw( gettimeofday tv_interval );
+use lib '/home/httpd/lib/perl/';
+use LONCAPA;
+
BEGIN {
- &Apache::lonxml::register('Apache::structuretags',('block','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','startouttext','endouttext'));
-# &Apache::lonxml::register_insert('problem','',('part','postanswerdate','preduedate'))
+ &Apache::lonxml::register('Apache::structuretags',('block','languageblock','translated','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startpartmarker','startouttext','endpartmarker','endouttext','simpleeditbutton','definetag'));
}
sub start_web {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
- my $bodytext=&Apache::lonxml::get_all_text("/web",$$parser[$#$parser]);
- if ($target eq 'web') {
- return $bodytext;
- }
- return '';
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ if ($target ne 'edit' && $target ne 'modified') {
+ my $bodytext=&Apache::lonxml::get_all_text("/web",$parser,$style);
+ if ($target eq 'web' || $target eq 'webgrade') {
+ return $bodytext;
+ }
+ } elsif ($target eq "edit" ) {
+ my $bodytext =
+ &Apache::lonxml::get_all_text_unbalanced("/web",$parser);
+ my $result = &Apache::edit::tag_start($target,$token);
+ $result .= &Apache::edit::editfield($token->[1],$bodytext,'',80,1);
+ return $result;
+ } elsif ( $target eq "modified" ) {
+ return $token->[4].&Apache::edit::modifiedfield("/web",$parser);
+ }
+ return '';
}
sub end_web {
@@ -54,723 +93,2319 @@ sub end_web {
}
sub start_tex {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
- my $bodytext=&Apache::lonxml::get_all_text("/tex",$$parser[$#$parser]);
- if ($target eq 'tex') {
- return $bodytext.' ';
- }
- return '';
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result='';
+ if ($target ne 'edit' && $target ne 'modified') {
+ my $bodytext=&Apache::lonxml::get_all_text("/tex",$parser,$style);
+ if ($target eq 'tex') {
+
+ # If inside a table, occurrences of \\ must be removed;
+ # else the table blows up.
+
+ if (&Apache::londefdef::is_inside_of($tagstack, "table")) {
+ $bodytext =~ s/\\\\//g;
+ }
+ return $bodytext.'{}';
+ }
+ } elsif ($target eq "edit" ) {
+ my $bodytext =
+ &Apache::lonxml::get_all_text_unbalanced("/tex",$parser);
+ my $result = &Apache::edit::tag_start($target,$token);
+ $result .= &Apache::edit::editfield($token->[1],$bodytext,'',80,1);
+ return $result;
+ } elsif ( $target eq "modified" ) {
+ return $token->[4].&Apache::edit::modifiedfield("/tex",$parser);
+ }
+ return $result;;
}
sub end_tex {
return '';
}
+sub homework_js {
+ return &Apache::loncommon::resize_textarea_js().
+ &setmode_javascript().
+ <<'JS';
+
+JS
+}
+
+sub setmode_javascript {
+ return <<"ENDSCRIPT";
+
+ENDSCRIPT
+}
+
sub page_start {
- my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
- my %found;
- foreach my $taginside ($tagstack) {
- foreach my $taglookedfor ('html','body','form') {
- if ($taginside =~ /^$taglookedfor$/i) { $found{$taglookedfor} = 1; }
- }
- }
-
- my $result;
- my $head_tag_start;
- if (!defined($found{'html'})) {
- $result=&Apache::londefdef::start_html($target,$token,$tagstack,$parstack,
- $parser,$safeeval);
- $head_tag_start='
'.&Apache::lonxml::registerurl(undef,$target);
- }
- my $body_tag_start;
- if (!defined($found{'body'})) {
- $body_tag_start='';
- }
- my $form_tag_start;
- if (!defined($found{'form'})) {
- $form_tag_start='\n".&Apache::loncommon::end_page();
+}
+
+sub option {
+ my ($value,$name) = @_;
+ my $result ="