--- loncom/interface/lonhtmlcommon.pm 2004/07/19 21:14:15 1.83
+++ loncom/interface/lonhtmlcommon.pm 2005/06/14 02:33:18 1.108
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.83 2004/07/19 21:14:15 raeburn Exp $
+# $Id: lonhtmlcommon.pm,v 1.108 2005/06/14 02:33:18 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -55,10 +55,11 @@ html.
package Apache::lonhtmlcommon;
+use strict;
use Time::Local;
use Time::HiRes;
use Apache::lonlocal;
-use strict;
+use Apache::lonnet;
##############################################
##############################################
@@ -80,7 +81,7 @@ sub authorbombs {
foreach (keys %bombs) {
if ($_=~/^$udom\/$uname\//) {
return ''.
+ '">'.
&Apache::loncommon::help_open_topic('About_Bombs');
}
}
@@ -117,15 +118,22 @@ sub store_recent {
time.'&'.&Apache::lonnet::escape($value) });
}
+sub remove_recent {
+ my ($area,$names)=@_;
+ my $file=&recent_filename($area);
+ return &Apache::lonnet::del($file,$names);
+}
+
sub select_recent {
my ($area,$fieldname,$event)=@_;
my %recent=&Apache::lonnet::dump(&recent_filename($area));
my $return="\n\n";
+ my $minuteselector = qq{};
+ my $secondselector= qq{};
+ my $cal_link = qq{};
+ #
+ if ($no_hh_mm_ss) {
+ $result .= &mt('[_1] [_2] [_3] [_4]Select Date[_5]',
+ $monthselector,$dayselector,$yearselector,
+ $cal_link,'');
+ } else {
+ $result .= &mt('[_1] [_2] [_3] [_4] [_5]m [_6]s [_7]Select Date[_8]',
+ $monthselector,$dayselector,$yearselector,
+ $hourselector,$minuteselector,$secondselector,
+ $cal_link,'');
+ }
+ $result .= "\n\n";
return $result;
}
@@ -406,8 +443,8 @@ sub get_date_from_form {
my ($dname) = @_;
my ($sec,$min,$hour,$day,$month,$year);
#
- if (defined($ENV{'form.'.$dname.'_second'})) {
- my $tmpsec = $ENV{'form.'.$dname.'_second'};
+ if (defined($env{'form.'.$dname.'_second'})) {
+ my $tmpsec = $env{'form.'.$dname.'_second'};
if (($tmpsec =~ /^\d+$/) && ($tmpsec >= 0) && ($tmpsec < 60)) {
$sec = $tmpsec;
}
@@ -415,8 +452,8 @@ sub get_date_from_form {
} else {
$sec = 0;
}
- if (defined($ENV{'form.'.$dname.'_minute'})) {
- my $tmpmin = $ENV{'form.'.$dname.'_minute'};
+ if (defined($env{'form.'.$dname.'_minute'})) {
+ my $tmpmin = $env{'form.'.$dname.'_minute'};
if (($tmpmin =~ /^\d+$/) && ($tmpmin >= 0) && ($tmpmin < 60)) {
$min = $tmpmin;
}
@@ -424,28 +461,28 @@ sub get_date_from_form {
} else {
$min = 0;
}
- if (defined($ENV{'form.'.$dname.'_hour'})) {
- my $tmphour = $ENV{'form.'.$dname.'_hour'};
+ if (defined($env{'form.'.$dname.'_hour'})) {
+ my $tmphour = $env{'form.'.$dname.'_hour'};
if (($tmphour =~ /^\d+$/) && ($tmphour >= 0) && ($tmphour < 24)) {
$hour = $tmphour;
}
} else {
$hour = 0;
}
- if (defined($ENV{'form.'.$dname.'_day'})) {
- my $tmpday = $ENV{'form.'.$dname.'_day'};
+ if (defined($env{'form.'.$dname.'_day'})) {
+ my $tmpday = $env{'form.'.$dname.'_day'};
if (($tmpday =~ /^\d+$/) && ($tmpday > 0) && ($tmpday < 32)) {
$day = $tmpday;
}
}
- if (defined($ENV{'form.'.$dname.'_month'})) {
- my $tmpmonth = $ENV{'form.'.$dname.'_month'};
+ if (defined($env{'form.'.$dname.'_month'})) {
+ my $tmpmonth = $env{'form.'.$dname.'_month'};
if (($tmpmonth =~ /^\d+$/) && ($tmpmonth > 0) && ($tmpmonth < 13)) {
$month = $tmpmonth - 1;
}
}
- if (defined($ENV{'form.'.$dname.'_year'})) {
- my $tmpyear = $ENV{'form.'.$dname.'_year'};
+ if (defined($env{'form.'.$dname.'_year'})) {
+ my $tmpyear = $env{'form.'.$dname.'_year'};
if (($tmpyear =~ /^\d+$/) && ($tmpyear > 1900)) {
$year = $tmpyear - 1900;
}
@@ -507,8 +544,8 @@ sub javascript_nothing {
my $nothing = "''";
my $user_browser;
my $user_os;
- $user_browser = $ENV{'browser.type'} if (exists($ENV{'browser.type'}));
- $user_os = $ENV{'browser.os'} if (exists($ENV{'browser.os'}));
+ $user_browser = $env{'browser.type'} if (exists($env{'browser.type'}));
+ $user_os = $env{'browser.os'} if (exists($env{'browser.os'}));
if (! defined($user_browser) || ! defined($user_os)) {
(undef,$user_browser,undef,undef,undef,$user_os) =
&Apache::loncommon::decode_user_agent();
@@ -519,6 +556,27 @@ sub javascript_nothing {
return $nothing;
}
+##############################################
+##############################################
+sub javascript_docopen {
+ # safari does not understand document.open() and loads "text/html"
+ my $nothing = "''";
+ my $user_browser;
+ my $user_os;
+ $user_browser = $env{'browser.type'} if (exists($env{'browser.type'}));
+ $user_os = $env{'browser.os'} if (exists($env{'browser.os'}));
+ if (! defined($user_browser) || ! defined($user_os)) {
+ (undef,$user_browser,undef,undef,undef,$user_os) =
+ &Apache::loncommon::decode_user_agent();
+ }
+ if ($user_browser eq 'safari' && $user_os =~ 'mac') {
+ $nothing = "document.clear()";
+ } else {
+ $nothing = "document.open('text/html','replace')";
+ }
+ return $nothing;
+}
+
##############################################
##############################################
@@ -533,7 +591,7 @@ enrollment status of students. The sele
Inputs:
$status: the currently selected status. If undefined the value of
-$ENV{'form.Status'} is taken. If that is undefined, a value of 'Active'
+$env{'form.Status'} is taken. If that is undefined, a value of 'Active'
is used.
$formname: The name of the form. If defined the onchange attribute of
@@ -555,7 +613,7 @@ sub StatusOptions {
$size = 1 if (!defined($size));
if (! defined($status)) {
$status = 'Active';
- $status = $ENV{'form.Status'} if (exists($ENV{'form.Status'}));
+ $status = $env{'form.Status'} if (exists($env{'form.Status'}));
}
my $OpSel1 = '';
@@ -709,13 +767,14 @@ sub Create_PrgWin {
$prog_state{'type'}=$type;
if ($type eq 'popup') {
$prog_state{'window'}='popwin';
+ my $html=&Apache::lonxml::xmlbegin();
#the whole function called through timeout is due to issues
#in mozilla Read BUG #2665 if you want to know the whole story
&r_print($r,'
+ENDCHECK
+}
+
+# ---------------------------------- Generate link to spell checker for a field
+
+sub spelllink {
+ my ($form,$field)=@_;
+ my $linktext=&mt('Check Spelling');
+ return (<$linktext
+ENDLINK
+}
+
# ------------------------------------------------- Output headers for HTMLArea
sub htmlareaheaders {
@@ -897,14 +993,14 @@ sub htmlareaaddbuttons {
config.registerButton('ed_math','LaTeX Inline',
'/htmlarea/images/ed_math.gif',false,
function(editor,id) {
- editor.surroundHTML('\$','\$');
+ editor.surroundHTML(' \$','\$ ');
}
);
config.registerButton('ed_math_eqn','LaTeX Equation',
'/htmlarea/images/ed_math_eqn.gif',false,
function(editor,id) {
editor.surroundHTML(
- '\\\\[','\\\\]');
+ ' \\n\\\\[','\\\\]\\n ');
}
);
config.toolbar.push(['ed_math','ed_math_eqn']);
@@ -918,7 +1014,7 @@ sub disablelink {
if (defined($#fields)) {
unless ($#fields>=0) { return ''; }
}
- return ''.&mt('Disable WYSIWYG Editor').'';
+ return ''.&mt('Disable WYSIWYG Editor').'';
}
sub enablelink {
@@ -926,7 +1022,7 @@ sub enablelink {
if (defined($#fields)) {
unless ($#fields>=0) { return ''; }
}
- return ''.&mt('Enable WYSIWYG Editor').'';
+ return ''.&mt('Enable WYSIWYG Editor').'';
}
# ----------------------------------------- Script to activate only some fields
@@ -948,7 +1044,7 @@ sub htmlareaselectactive {
# --------------------------------------------------------------------- Blocked
sub htmlareablocked {
- unless ($ENV{'environment.wysiwygeditor'} eq 'on') { return 1; }
+ unless ($env{'environment.wysiwygeditor'} eq 'on') { return 1; }
return 0;
}
@@ -1005,8 +1101,8 @@ returns: nothing
my @Crumbs;
sub breadcrumbs {
- my ($color,$component,$component_help,$function,$domain,$menulink) =
- @_;
+ my ($color,$component,$component_help,$function,$domain,$menulink,
+ $helplink) = @_;
if (! defined($color)) {
if (! defined($function)) {
$function = &Apache::loncommon::get_users_function();
@@ -1023,6 +1119,7 @@ returns: nothing
# Make the faq and bug data cascade
my $faq = '';
my $bug = '';
+ my $help='';
# The last breadcrumb does not have a link, so handle it separately.
my $last = pop(@Crumbs);
#
@@ -1030,10 +1127,10 @@ returns: nothing
if (!defined($menulink)) { $menulink=1; }
if ($menulink) {
my $description = 'Menu';
- if (exists($ENV{'request.course.id'}) &&
- $ENV{'request.course.id'} ne '') {
+ if (exists($env{'request.course.id'}) &&
+ $env{'request.course.id'} ne '') {
$description =
- $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
+ $env{'course.'.$env{'request.course.id'}.'.description'};
}
unshift(@Crumbs,{
href =>'/adm/menu',
@@ -1047,6 +1144,7 @@ returns: nothing
map {
$faq = $_->{'faq'} if (exists($_->{'faq'}));
$bug = $_->{'bug'} if (exists($_->{'bug'}));
+ $help = $_->{'help'} if (exists($_->{'help'}));
my $result = '{'target'}) && $_->{'target'} ne '') {
$result .= 'target="'.$_->{'target'}.'" ';
@@ -1062,17 +1160,17 @@ returns: nothing
my $icons = '';
$faq = $last->{'faq'} if (exists($last->{'faq'}));
$bug = $last->{'bug'} if (exists($last->{'bug'}));
+ $help = $last->{'help'} if (exists($last->{'help'}));
+ $component_help=($component_help?$component_help:$help);
# if ($faq ne '') {
# $icons .= &Apache::loncommon::help_open_faq($faq);
# }
# if ($bug ne '') {
# $icons .= &Apache::loncommon::help_open_bug($bug);
# }
- if (defined($component_help)) {
- $icons .=
- &Apache::loncommon::help_open_topic($component_help);
- }
- $icons .= &Apache::loncommon::help_open_menu($color,$component,$component_help,$function,$faq,$bug);
+ if ($helplink ne 'nohelp') {
+ $icons .= &Apache::loncommon::help_open_menu($color,$component,$component_help,$function,$faq,$bug);
+ }
if ($icons ne '') {
$Str .= $icons.' ';
}