--- loncom/interface/lonhtmlcommon.pm 2004/11/19 20:17:52 1.97 +++ loncom/interface/lonhtmlcommon.pm 2005/08/05 18:14:40 1.111 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common html routines # -# $Id: lonhtmlcommon.pm,v 1.97 2004/11/19 20:17:52 albertel Exp $ +# $Id: lonhtmlcommon.pm,v 1.111 2005/08/05 18:14:40 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'); } } @@ -99,7 +100,7 @@ sub store_recent { my ($area,$name,$value)=@_; my $file=&recent_filename($area); my %recent=&Apache::lonnet::dump($file); - if (scalar(keys(%recent))>10) { + if (scalar(keys(%recent))>20) { # remove oldest value my $oldest=time; my $delkey=''; @@ -257,18 +258,23 @@ The method used to restrict user input w ############################################## sub date_setter { my ($formname,$dname,$currentvalue,$special,$includeempty,$state, - $no_hh_mm_ss) = @_; + $no_hh_mm_ss,$defhour,$defmin,$defsec) = @_; + my $wasdefined=1; if (! defined($state) || $state ne 'disabled') { $state = ''; } if (! defined($no_hh_mm_ss)) { $no_hh_mm_ss = 0; } - if (! defined($currentvalue) || $currentvalue eq 'now') { - unless ($includeempty) { - $currentvalue = time; - } else { + if ($currentvalue eq 'now') { + $currentvalue=time; + } + if ((!defined($currentvalue)) || ($currentvalue eq '')) { + $wasdefined=0; + if ($includeempty) { $currentvalue = 0; + } else { + $currentvalue = time; } } # other potentially useful values: wkday,yrday,is_daylight_savings @@ -278,6 +284,20 @@ sub date_setter { localtime($currentvalue); $year += 1900; } + unless ($wasdefined) { + if (($defhour) || ($defmin) || ($defsec)) { + ($sec,$min,$hour,$mday,$month,$year,undef,undef,undef) = + localtime(time); + $year += 1900; + $sec=($defsec?$defsec:0); + $min=($defmin?$defmin:0); + $hour=($defhour?$defhour:0); + } elsif (!$includeempty) { + $sec=0; + $min=0; + $hour=0; + } + } my $result = "\n\n"; $result .= < @@ -435,8 +455,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; } @@ -444,8 +464,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; } @@ -453,28 +473,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; } @@ -505,11 +525,13 @@ parameter setting wizard. ############################################## sub pjump_javascript_definition { my $Str = <'. "var popwin; function openpopwin () { popwin=open(\'\',\'popwin\',\'width=400,height=100\');". - "popwin.document.writeln(\'$title". + "popwin.document.writeln(\'".$html."$title". "". "

$heading

". "
". @@ -854,8 +877,8 @@ sub Increment_PrgWin { $lasttime = '('.$lasttime.' '.&mt('seconds for').' '.$extraInfo.')'; } # - my $user_browser = $ENV{'browser.type'} if (exists($ENV{'browser.type'})); - my $user_os = $ENV{'browser.os'} if (exists($ENV{'browser.os'})); + my $user_browser = $env{'browser.type'} if (exists($env{'browser.type'})); + my $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(); @@ -899,23 +922,25 @@ sub crumbs { if (! defined($size)) { $size = '+2'; } + if ($target) { + $target = ' target="'. + &Apache::loncommon::escape_single($target).'"'; + } my $output=''; unless ($noformat) { $output.='
'; } $output.=''.$prefix.'/'; - if ($ENV{'user.adv'}) { + if ($env{'user.adv'}) { my $path=$prefix.'/'; - foreach (split('/',$uri)) { - unless ($_) { next; } - $path.=$_; + foreach my $dir (split('/',$uri)) { + if (! $dir) { next; } + $path .= $dir; unless ($path eq $uri) { $path.='/'; } - my $linkpath=$path; - if ($form) { - my $escaped_path = &Apache::loncommon::escape_single($path); - $linkpath="javascript:$form.action='$escaped_path';$form.submit();"; - } - my $escaped_linkpath = &Apache::loncommon::escape_single($linkpath); - my $escaped_target = &Apache::loncommon::escape_single($target); - $output.=''.$_.'/'; + my $linkpath = &Apache::loncommon::escape_single($path); + if ($form) { + $linkpath= + qq{javascript:$form.action='$linkpath';$form.submit();}; + } + $output.=qq{$dir/}; } } else { $output.=$uri; @@ -927,7 +952,8 @@ sub crumbs { # --------------------- A function that generates a window for the spellchecker sub spellheader { - my $nothing = &javascript_nothing(); + my $html=&Apache::lonxml::xmlbegin(); + my $nothing=&javascript_nothing(); return (< // @@ -949,7 +975,7 @@ sub spelllink { my ($form,$field)=@_; my $linktext=&mt('Check Spelling'); return (<$linktext +$linktext ENDLINK } @@ -1032,7 +1058,7 @@ sub htmlareaselectactive { # --------------------------------------------------------------------- Blocked sub htmlareablocked { - unless ($ENV{'environment.wysiwygeditor'} eq 'on') { return 1; } + unless ($env{'environment.wysiwygeditor'} eq 'on') { return 1; } return 0; } @@ -1107,6 +1133,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); # @@ -1114,10 +1141,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', @@ -1131,6 +1158,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'}.'" '; @@ -1146,6 +1174,8 @@ 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); # }