[LON-CAPA-cvs] cvs: loncom /interface lonhelper.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Thu, 09 Oct 2003 16:27:26 -0000
This is a MIME encoded message
--albertel1065716846
Content-Type: text/plain
albertel Thu Oct 9 12:27:26 2003 EDT
Modified files:
/loncom/interface lonhelper.pm
Log:
- removing 1.56
--albertel1065716846
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20031009122726.txt"
Index: loncom/interface/lonhelper.pm
diff -u loncom/interface/lonhelper.pm:1.56 loncom/interface/lonhelper.pm:1.57
--- loncom/interface/lonhelper.pm:1.56 Thu Oct 9 11:27:14 2003
+++ loncom/interface/lonhelper.pm Thu Oct 9 12:27:26 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# .helper XML handler to implement the LON-CAPA helper
#
-# $Id: lonhelper.pm,v 1.56 2003/10/09 15:27:14 sakharuk Exp $
+# $Id: lonhelper.pm,v 1.57 2003/10/09 16:27:26 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -172,12 +172,20 @@
when you are done. See lonprintout.pm for examples of this usage in the
printHelper subroutine.
+=head2 Localization
+
+The helper framework tries to handle as much localization as
+possible. The text is always run through
+Apache::lonlocal::normalize_string, so be sure to run the keys through
+that function for maximum usefulness and robustness.
+
=cut
package Apache::lonhelper;
use Apache::Constants qw(:common);
use Apache::File;
use Apache::lonxml;
+use Apache::lonlocal;
# Register all the tags with the helper, so the helper can
# push and pop them
@@ -257,9 +265,9 @@
# Send header, don't cache this page
if ($r->header_only) {
if ($ENV{'browser.mathml'}) {
- $r->content_type('text/xml');
+ $r->content_type('text/xml; charset=UTF-8');
} else {
- $r->content_type('text/html');
+ $r->content_type('text/html; charset=UTF-8');
}
$r->send_http_header;
return OK;
@@ -359,9 +367,10 @@
package Apache::lonhelper::helper;
use Digest::MD5 qw(md5_hex);
-use HTML::Entities;
+use HTML::Entities();
use Apache::loncommon;
use Apache::File;
+use Apache::lonlocal;
sub new {
my $proto = shift;
@@ -523,7 +532,7 @@
# Phase 1: Post processing for state of previous screen (which is actually
# the "current state" in terms of the helper variables), if it wasn't the
# beginning state.
- if ($self->{STATE} ne "START" || $ENV{"form.SUBMIT"} eq "Next ->") {
+ if ($self->{STATE} ne "START" || $ENV{"form.SUBMIT"} eq &mt("Next ->")) {
my $prevState = $self->{STATES}{$self->{STATE}};
$prevState->postprocess();
}
@@ -574,13 +583,19 @@
}
# Phase 4: Display.
- my $stateTitle = $state->title();
- my $bodytag = &Apache::loncommon::bodytag("$self->{TITLE}",'','');
+ my $stateTitle = &mt($state->title());
+ my $helperTitle = &mt($self->{TITLE});
+ my $bodytag = &Apache::loncommon::bodytag($helperTitle,'','');
+ my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"');
+ my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"');
+ # FIXME: This should be parameterized, not concatenated - Jeremy
+ my $loncapaHelper = &mt("LON-CAPA Helper:");
$result .= <<HEADER;
<html>
<head>
- <title>LON-CAPA Helper: $self->{TITLE}</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>$loncapaHelper: $helperTitle</title>
</head>
$bodytag
HEADER
@@ -607,12 +622,12 @@
}
if ($self->{DONE}) {
my $returnPage = $self->{RETURN_PAGE};
- $result .= "<a href=\"$returnPage\">End Helper</a>";
+ $result .= "<a href=\"$returnPage\">" . &mt("End Helper") . "</a>";
}
else {
$result .= '<nobr><input name="back" type="button" ';
- $result .= 'value="<- Previous" onclick="history.go(-1)" /> ';
- $result .= '<input name="SUBMIT" type="submit" value="Next ->" /></nobr>';
+ $result .= 'value="' . $previous . '" onclick="history.go(-1)" /> ';
+ $result .= '<input name="SUBMIT" type="submit" value="' . $next . '" /></nobr>';
}
}
@@ -626,12 +641,12 @@
}
if ($self->{DONE}) {
my $returnPage = $self->{RETURN_PAGE};
- $result .= "<a href=\"$returnPage\">End Helper</a>";
+ $result .= "<a href=\"$returnPage\">" . &mt('End Helper') . "</a>";
}
else {
$result .= '<nobr><input name="back" type="button" ';
- $result .= 'value="<- Previous" onclick="history.go(-1)" /> ';
- $result .= '<input name="SUBMIT" type="submit" value="Next ->" /></nobr>';
+ $result .= 'value="' . $previous . '" onclick="history.go(-1)" /> ';
+ $result .= '<input name="SUBMIT" type="submit" value="' . $next . '" /></nobr>';
}
}
@@ -883,6 +898,7 @@
sub end_defaultvalue { return ''; }
+# Validators may need to take language specifications
sub start_validator {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
@@ -952,11 +968,17 @@
This is also a good template for creating your own new states, as it has
very little code beyond the state template.
+=head3 Localization
+
+The contents of the message tag will be run through the
+normalize_string function and that will be used as a call to &mt.
+
=cut
no strict;
@ISA = ("Apache::lonhelper::element");
use strict;
+use Apache::lonlocal;
BEGIN {
&Apache::lonhelper::register('Apache::lonhelper::message',
@@ -998,7 +1020,7 @@
sub render {
my $self = shift;
- return $self->{MESSAGE_TEXT};
+ return &mtn($self->{MESSAGE_TEXT});
}
# If a NEXTSTATE was given, switch to it
sub postprocess {
@@ -1100,6 +1122,7 @@
no strict;
@ISA = ("Apache::lonhelper::element");
use strict;
+use Apache::lonlocal;
BEGIN {
&Apache::lonhelper::register('Apache::lonhelper::choices',
@@ -1253,7 +1276,7 @@
$choiceLabel = eval($choiceLabel);
$choiceLabel = &$choiceLabel($helper, $self);
}
- $result .= "/></td><td> " . $choiceLabel . "</td></tr>\n";
+ $result .= "/></td><td> " . &mtn($choiceLabel) . "</td></tr>\n";
}
$result .= "</table>\n\n\n";
$result .= $buttons;
@@ -1312,9 +1335,13 @@
=cut
+# This really ought to be a sibling class to "choice" which is itself
+# a child of some abstract class.... *shrug*
+
no strict;
@ISA = ("Apache::lonhelper::element");
use strict;
+use Apache::lonlocal;
BEGIN {
&Apache::lonhelper::register('Apache::lonhelper::dropdown',
@@ -1404,7 +1431,7 @@
$choiceLabel = eval($choiceLabel);
$choiceLabel = &$choiceLabel($helper, $self);
}
- $result .= ">" . $choiceLabel . "\n";
+ $result .= ">" . &mtn($choiceLabel) . "\n";
}
$result .= "</select>\n";
@@ -1473,6 +1500,7 @@
no strict;
@ISA = ("Apache::lonhelper::element");
use strict;
+use Apache::lonlocal; # A localization nightmare
use Time::localtime;
@@ -1537,7 +1565,7 @@
} else {
$result .= "<option value='$i'>";
}
- $result .= $months[$i] . "</option>\n";
+ $result .= &mt($months[$i]) . "</option>\n";
}
$result .= "</select>\n";
@@ -1624,17 +1652,26 @@
$hour = $ENV{'form.' . $var . 'hour'};
}
- my $chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);
+ my $chosenDate;
+ eval {$chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);};
+ my $error = $@;
+
# Check to make sure that the date was not automatically co-erced into a
# valid date, as we want to flag that as an error
# This happens for "Feb. 31", for instance, which is coerced to March 2 or
- # 3, depending on if it's a leapyear
+ # 3, depending on if it's a leap year
my $checkDate = localtime($chosenDate);
- if ($checkDate->mon != $month || $checkDate->mday != $day ||
+ if ($error || $checkDate->mon != $month || $checkDate->mday != $day ||
$checkDate->year + 1900 != $year) {
+ unless (Apache::lonlocal::current_language()== ~/^en/) {
+ $self->{ERROR_MSG} = &mt("Invalid date entry");
+ return 0;
+ }
+ # LOCALIZATION FIXME: Needs to be parameterized
$self->{ERROR_MSG} = "Can't use " . $months[$month] . " $day, $year as a "
. "date because it doesn't exist. Please enter a valid date.";
+
return 0;
}
@@ -2044,11 +2081,11 @@
}
}
}
- function checksec(value) {
+ function checksec() {
for (i=0; i<document.forms.helpform.elements.length; i++) {
comp = document.forms.helpform.elements.chksec.value;
if (document.forms.helpform.elements[i].value.indexOf(':'+comp+':') != -1) {
- document.forms.helpform.elements[i].checked=value;
+ document.forms.helpform.elements[i].checked=true;
}
}
}
@@ -2066,11 +2103,8 @@
<input type="button" onclick="checkactive()" value="Select Only Current Students" />
<input type="button" onclick="checkall(true, '$var')" value="Select All Students" />
<input type="button" onclick="checkall(false, '$var')" value="Unselect All Students" />
-<br />
-<input type="button" onclick="checksec(true)" value="Select for Section/Group">
+<input type="button" onclick="checksec()" value="Check for Section/Group">
<input type="text" size="5" name="chksec">
-<input type="button" onclick="checksec(false)" value="Unselect for Section/Group">
-
<br />
BUTTONS
}
--albertel1065716846--