--- loncom/interface/lonhtmlcommon.pm 2009/05/16 18:06:41 1.214
+++ loncom/interface/lonhtmlcommon.pm 2009/06/08 18:04:45 1.222
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.214 2009/05/16 18:06:41 tempelho Exp $
+# $Id: lonhtmlcommon.pm,v 1.222 2009/06/08 18:04:45 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -77,12 +77,12 @@ sub confirm_success {
my ($message,$failure)=@_;
if ($failure) {
return ''."\n"
- .'
'."\n"
+ .'
'."\n"
.$message."\n"
.''."\n";
} else {
return ''."\n"
- .'
'."\n"
+ .'
'."\n"
.$message."\n"
.''."\n";
}
@@ -130,11 +130,13 @@ sub dragmath_js {
my ($popup) = @_;
return <
+ //
ENDDRAGMATHJS
@@ -161,7 +163,7 @@ sub authorbombs {
foreach (keys %bombs) {
if ($_=~/^$udom\/$uname\//) {
return '
'.
+ '">
'.
&Apache::loncommon::help_open_topic('About_Bombs');
}
}
@@ -430,6 +432,7 @@ sub date_setter {
my $result = "\n\n";
$result .= <
+//
ENDJS
$result .= ' ';
@@ -975,6 +979,7 @@ sub Create_PrgWin {
#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,'");
+ "\nwindow.setTimeout(openpopwin,0)".
+ '// ]]>'.
+ '');
$prog_state{'formname'}='popremain';
$prog_state{'inputname'}="remaining";
} elsif ($type eq 'inline') {
@@ -1018,10 +1025,14 @@ sub Create_PrgWin {
# update progress
sub Update_PrgWin {
my ($r,$prog_state,$displayString)=@_;
- &r_print($r,'');
+ $displayString.'";'.
+ '// ]]>'.
+ '');
$$prog_state{'laststart'}=&Time::HiRes::time();
}
@@ -1074,11 +1085,15 @@ sub Increment_PrgWin {
if ($user_browser eq 'explorer' && $user_os =~ 'mac') {
$lasttime = '';
}
- &r_print($r,'');
+ ': '.$time_est.' '.&mt('remaining').' '.$lasttime.'";'.
+ '// ]]>'.
+ '');
$$prog_state{'laststart'}=&Time::HiRes::time();
}
@@ -1086,7 +1101,11 @@ sub Increment_PrgWin {
sub Close_PrgWin {
my ($r,$prog_state)=@_;
if ($$prog_state{'type'} eq 'popup') {
- &r_print($r,''."\n");
+ &r_print($r,''."\n");
} elsif ($$prog_state{'type'} eq 'inline') {
&Update_PrgWin($r,$prog_state,&mt('Done'));
}
@@ -1168,6 +1187,7 @@ sub spellheader {
my $nothing=&javascript_nothing();
return (<
+//
+// ]]>
ENDCHECK
}
@@ -1251,7 +1272,8 @@ sub htmlareaselectactive {
my @fields=@_;
unless (&htmlareabrowser()) { return ''; }
if (&htmlareablocked()) { return '
'.&enablelink(@fields); }
- my $output='
".
+ $output.="\nwindow.status='Activated Editfields';\n"
+ .'// ]]>'
+ .'
'.
&disablelink(@fields);
return $output;
}
@@ -1330,13 +1354,13 @@ returns: nothing
my @Crumbs;
sub breadcrumbs {
- my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt, $no_realBreadcrumb) = @_;
+ my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt, $CourseBreadcrumbs) = @_;
#
- $css_class ||= 'LC_breadcrumbs';
+ $css_class ||= 'LC_breadcrumbs';
my $Str1 = '';
@@ -1641,6 +1664,7 @@ sub course_selection {
my ($formname,$totcodes,$codetitles,$idlist,$idlist_titles) = @_;
my $output = qq|
|;
my $courseform=''.&Apache::loncommon::selectcourse_link
@@ -1767,7 +1792,6 @@ sub email_default_row {
sub submit_row {
my ($title,$cmd,$submit_text,$css_class) = @_;
- $submit_text = &mt($submit_text);
my $output = &row_title($title,$css_class,'LC_pick_box_submit');
$output .= qq|
@@ -1806,13 +1830,11 @@ sub course_custom_roles {
#
sub topic_bar {
my ($imgnum,$title) = @_;
- return '
-
-
!['.&mt('Step [_1]',$imgnum).
- '](/res/adm/pages/bl_step'.$imgnum.'.gif)
-
'.$title.'
-
-';
+ return ''
+ .'
!['.&mt('Step [_1]',$imgnum).'](/res/adm/pages/bl_step'.$imgnum.'.gif)
'
+ .' '.$title
+ .'
';
}
##############################################
@@ -2064,6 +2086,53 @@ END
return $scripttag;
}
+
+# USAGE: htmltag(element, content, {attribute => value,...});
+#
+# EXAMPLES:
+# - htmltag('a', 'this is an anchor', {href => 'www.example.com',
+# title => 'this is a title'})
+#
+# - You might want to set up needed tags like:
+#
+# my $h3 = sub { return htmltag( "h3", @_ ) };
+#
+# ... and use them: $h3->("This is a headline")
+#
+# - To set up a couple of tags, see sub inittags
+#
+# NOTES:
+# - Empty elements, such as
are correctly terminated,
+# i.e. htmltag('br') returns
+# - Empty attributes (title="") are filtered out.
+# - The function will not check for deprecated attributes.
+#
+# OUTPUT: content enclosed in xhtml conform tags
+sub htmltag{
+ return
+ qq|<$_[0]|
+ . join( '', map { qq| $_="${$_[2]}{$_}"| if ${$_[2]}{$_} } keys %{ $_[2] } )
+ . ($_[1] ? qq|>$_[1]$_[0]>| : qq|/>|). "\n";
+};
+
+
+# USAGE: inittags(@tags);
+#
+# EXAMPLES:
+# - my ($h1, $h2, $h3) = initTags( qw( h1 h2 h3 ) )
+# $h1->("This is a headline") #Returns: This is a headline
+#
+# NOTES: See sub htmltag for further information.
+#
+# OUTPUT: List of subroutines.
+sub inittags {
+ my @tags = @_;
+ return map { my $tag = $_;
+ sub { return htmltag( $tag, @_ ) }
+ } @tags;
+}
+
+
##############################################
##############################################
@@ -2101,23 +2170,8 @@ END
# --------------------------
sub generate_menu {
my @menu = @_;
-
- # usage: $wrap->(element, content, {attribute => value,...});
- # output: content enclosed in html conform tags
- my $wrap = sub {
- return
- qq|<$_[0]|
- . join( '', map { qq| $_="${$_[2]}{$_}"| } keys %{ $_[2] } )
- . ($_[1] ? qq|>$_[1]$_[0]>| : qq|/>|). "\n";
- };
-
# subs for specific html elements
- my $h3 = sub { return $wrap->( "h3", @_ ) };
- my $div = sub { return $wrap->( "div", @_ ) };
- my $ul = sub { return $wrap->( "ul", @_ ) };
- my $li = sub { return $wrap->( "li", @_ ) };
- my $a = sub { return $wrap->( "a", @_ ) };
- my $img = sub { return $wrap->( "img", @_ ) };
+ my ($h3, $div, $ul, $li, $a, $img) = inittags( qw(h3 div ul li a img) );
my @categories; # each element represents the entire markup for a category
@@ -2160,7 +2214,7 @@ sub generate_menu {
push @categories,
$div->($h3->(mt($$category{categorytitle}), {class=>"LC_hcell"}).
$ul->(join('' ,@links), {class =>"LC_ListStyleNormal" }),
- {class=>"LC_ContentBoxSpecial LC_400Box"}) if scalar(@links);
+ {class=>"LC_Box LC_400Box"}) if scalar(@links);
}
# wrap the joined @categories in another (column layout)