[LON-CAPA-cvs] cvs: loncom /homework outputtags.pm

albertel lon-capa-cvs@mail.lon-capa.org
Wed, 16 Oct 2002 19:21:33 -0000


albertel		Wed Oct 16 15:21:33 2002 EDT

  Modified files:              
    /loncom/homework	outputtags.pm 
  Log:
  - retabinate
  - <displaytitle /> and <displayduedate /> should only have an effect once
  
  
Index: loncom/homework/outputtags.pm
diff -u loncom/homework/outputtags.pm:1.19 loncom/homework/outputtags.pm:1.20
--- loncom/homework/outputtags.pm:1.19	Mon Aug 19 15:06:02 2002
+++ loncom/homework/outputtags.pm	Wed Oct 16 15:21:32 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # tags that create controlled output
 #
-# $Id: outputtags.pm,v 1.19 2002/08/19 19:06:02 sakharuk Exp $
+# $Id: outputtags.pm,v 1.20 2002/10/16 19:21:32 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -33,67 +33,81 @@
 use POSIX qw(strftime);
 
 BEGIN {
-  &Apache::lonxml::register('Apache::outputtags',('displayduedate','displaytitle'));
+    &Apache::lonxml::register('Apache::outputtags',('displayduedate','displaytitle'));
+}
+
+sub initialize_outputtags {
+    %Apache::outputtags::showonce=();
 }
 
 sub start_displayduedate {
-  my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
-  my $result;
-  my $status=$Apache::inputtags::status['-1'];
-  &Apache::lonxml::debug("got a $status in duedatebox");
-  if (($status =~ /CAN.*_ANSWER/) && ($target eq 'web')) {
-    my $format = &Apache::lonxml::get_param('format',$parstack,$safeeval);
-    if ($format eq '') {
-      &Apache::lonxml::debug("using default format");
-      $format="%c";
-    }
-    my $id = $Apache::inputtags::part;
-    my $date = &Apache::lonnet::EXT("resource.$id.duedate");
-    &Apache::lonxml::debug("duedatebox found $date for $id");
-    if ($date) {
-       $result ='<table border="on"><tr><td>Due at '.
-         POSIX::strftime($format,localtime($date)).
-	   '</td></tr></table>';
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+    my $result;
+    if (exists($Apache::outputtags::showonce{'displayduedate'})) {
+	return '';
     } else {
-      $result ='<table border="on"><tr><td>No due date set.</td></tr></table>';
+	$Apache::outputtags::showonce{'displayduedate'}=1;
+    }
+    my $status=$Apache::inputtags::status['-1'];
+    &Apache::lonxml::debug("got a $status in duedatebox");
+    if (($status =~ /CAN.*_ANSWER/) && ($target eq 'web')) {
+	my $format = &Apache::lonxml::get_param('format',$parstack,$safeeval);
+	if ($format eq '') {
+	    &Apache::lonxml::debug("using default format");
+	    $format="%c";
+	}
+	my $id = $Apache::inputtags::part;
+	my $date = &Apache::lonnet::EXT("resource.$id.duedate");
+	&Apache::lonxml::debug("duedatebox found $date for $id");
+	if ($date) {
+	    $result ='<table border="on"><tr><td>Due at '.
+		POSIX::strftime($format,localtime($date)).
+			'</td></tr></table>';
+	} else {
+	    $result ='<table border="on"><tr><td>No due date set.</td></tr></table>';
+	}
+    } elsif ( $target eq 'edit' ) {
+	$result=&Apache::edit::tag_start($target,$token);
+	$result.='</td></tr>';
+	$result.=&Apache::edit::end_table();
     }
-  } elsif ( $target eq 'edit' ) {
-    $result=&Apache::edit::tag_start($target,$token);
-    $result.='</td></tr>';
-    $result.=&Apache::edit::end_table();
-  }
-  return $result;
+    return $result;
 }
 
 sub end_displayduedate {
-  my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
-  my @result;
-  if ($target eq 'edit') { $result[1]='no'; }
-  return @result;
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+    my @result;
+    if ($target eq 'edit') { $result[1]='no'; }
+    return @result;
 }
 
 sub start_displaytitle {
-  my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
-  my $result='';
-  if ($target eq 'web') {
-    $result="<h1>$Apache::lonhomework::name</h1>";
-  } elsif ($target eq 'edit') {
-    $result=&Apache::edit::tag_start($target,$token);
-    $result.='</td></tr>';
-    $result.=&Apache::edit::end_table();
-  } elsif ($target eq 'tex') {
-      $Apache::lonhomework::name=~s/%/\%/g;
-      $Apache::lonhomework::name=~s/&/\&/g;
-      $result='\vskip 0 mm\noindent\textbf{'.$Apache::lonhomework::name.'}\vskip 0 mm';
-  }
-  return $result;
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+    my $result='';
+    if (exists($Apache::outputtags::showonce{'displayduedate'})) {
+	return '';
+    } else {
+	$Apache::outputtags::showonce{'displayduedate'}=1;
+    }
+    if ($target eq 'web') {
+	$result="<h1>$Apache::lonhomework::name</h1>";
+    } elsif ($target eq 'edit') {
+	$result=&Apache::edit::tag_start($target,$token);
+	$result.='</td></tr>';
+	$result.=&Apache::edit::end_table();
+    } elsif ($target eq 'tex') {
+	$Apache::lonhomework::name=~s/%/\%/g;
+	$Apache::lonhomework::name=~s/&/\&/g;
+	$result='\vskip 0 mm\noindent\textbf{'.$Apache::lonhomework::name.'}\vskip 0 mm';
+    }
+    return $result;
 }
 
 sub end_displaytitle {
-  my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
-  my @result;
-  if ($target eq 'edit') { $result[1]='no'; }
-  return @result;
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
+    my @result;
+    if ($target eq 'edit') { $result[1]='no'; }
+    return @result;
 }
 
 1;