--- loncom/interface/lonhtmlcommon.pm 2010/11/08 23:27:58 1.253.2.5
+++ loncom/interface/lonhtmlcommon.pm 2010/01/26 13:08:08 1.265
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.253.2.5 2010/11/08 23:27:58 raeburn Exp $
+# $Id: lonhtmlcommon.pm,v 1.265 2010/01/26 13:08:08 wenzelju Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -66,7 +66,7 @@ use LONCAPA;
sub coursepreflink {
my ($text,$category)=@_;
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) {
- return ''.$text.'';
+ return '&"').'">'.$text.'';
} else {
return '';
}
@@ -74,15 +74,13 @@ sub coursepreflink {
sub raw_href_to_link {
my ($message)=@_;
- $message=~s/(https?\:\/\/[^\s\'\"]+)(\s|$)/$1<\/tt><\/a>$2/gi;
+ $message=~s/(https?\:\/\/[^\s\'\"\<]+)([\s\<]|$)/$1<\/tt><\/a>$2/gi;
return $message;
}
##############################################
##############################################
-=pod
-
=item confirm_success
Successful completion of an operation message
@@ -92,7 +90,7 @@ Successful completion of an operation me
sub confirm_success {
my ($message,$failure)=@_;
if ($failure) {
- return ''."\n"
+ return ''."\n"
.' '."\n"
.$message."\n"
.''."\n";
@@ -139,7 +137,6 @@ ENDDRAGMATH
Javascript used to open pop-up window containing dragmath applet which
can be used to paste LaTeX into a textarea.
-
=cut
sub dragmath_js {
@@ -383,7 +380,8 @@ dname_hour, dname_min, and dname_sec.
The current setting for this time parameter. A unix format time
(time in seconds since the beginning of Jan 1st, 1970, GMT.
-An undefined value is taken to indicate the value is the current time.
+An undefined value is taken to indicate the value is the current time
+unless it is requested to leave it empty. See $includeempty.
Also, to be explicit, a value of 'now' also indicates the current time.
=item $special
@@ -393,6 +391,9 @@ the date_setter. See lonparmset for exa
=item $includeempty
+If it is set (true) and no date/time value is provided,
+the date/time fields are left empty.
+
=item $state
Specifies the initial state of the form elements. Either 'disabled' or empty.
@@ -412,7 +413,11 @@ sub date_setter {
my ($formname,$dname,$currentvalue,$special,$includeempty,$state,
$no_hh_mm_ss,$defhour,$defmin,$defsec,$nolink) = @_;
my $now = time;
- my $wasdefined=1;
+
+ my $tzname;
+ my ($sec,$min,$hour,$mday,$month,$year) = ('', '', undef,''.''.'');
+ #other potentially useful values: wkday,yrday,is_daylight_savings
+
if (! defined($state) || $state ne 'disabled') {
$state = '';
}
@@ -420,33 +425,24 @@ sub date_setter {
$no_hh_mm_ss = 0;
}
if ($currentvalue eq 'now') {
- $currentvalue = $now;
+ $currentvalue = $now;
}
- if ((!defined($currentvalue)) || ($currentvalue eq '')) {
- $wasdefined=0;
- if ($includeempty) {
- $currentvalue = 0;
- } else {
- $currentvalue = $now;
- }
+
+ # Default value: Set empty date field to current time
+ # unless empty inclusion is requested
+ if ((!$includeempty) && (!$currentvalue)) {
+ $currentvalue = $now;
}
- # other potentially useful values: wkday,yrday,is_daylight_savings
- my $tzname;
- my ($sec,$min,$hour,$mday,$month,$year)=('','',undef,'','','');
+ # Do we have a date? Split it!
if ($currentvalue) {
- ($tzname,$sec,$min,$hour,$mday,$month,$year) = &get_timedates($currentvalue);
- }
- unless ($wasdefined) {
- ($tzname,$sec,$min,$hour,$mday,$month,$year) = &get_timedates($now);
- if (($defhour) || ($defmin) || ($defsec)) {
- $sec=($defsec?$defsec:0);
- $min=($defmin?$defmin:0);
- $hour=($defhour?$defhour:0);
- } elsif (!$includeempty) {
- $sec=0;
- $min=0;
- $hour=0;
- }
+ ($tzname,$sec,$min,$hour,$mday,$month,$year) = &get_timedates($currentvalue);
+
+ #No values provided for hour, min, sec? Use default 0
+ if (($defhour) || ($defmin) || ($defsec)) {
+ $sec = ($defsec ? $defsec : 0);
+ $min = ($defmin ? $defmin : 0);
+ $hour = ($defhour ? $defhour : 0);
+ }
}
my $result = "\n\n";
$result .= <
-ENDHEADERS
+ my $s="";
+ if (&htmlareabrowser()) {
+ $s.=(<
+ENDEDITOR
+ }
+ $s.=(<
+
+
+ENDJQUERY
+ return $s;
}
# ----------------------------------------------------------------- Preferences
@@ -1280,21 +1283,78 @@ sub htmlarea_lang {
sub htmlareaselectactive {
my @fields=@_;
unless (&htmlareabrowser()) { return ''; }
- if (&htmlareablocked()) { return '
'.&enablelink(@fields); }
- my $output='
'.
@@ -1378,75 +1438,51 @@ returns: nothing
# The first one should be the course or a menu link
if (!defined($menulink)) { $menulink=1; }
if ($menulink) {
- if ($menulink eq '_nomenu') {
- return unless($last);
+ my $description = 'Menu';
+ my $no_mt_descr = 0;
+ if (exists($env{'request.course.id'}) &&
+ $env{'request.course.id'} ne '') {
+ $description =
+ $env{'course.'.$env{'request.course.id'}.'.description'};
+ $no_mt_descr = 1;
+ }
+ $menulink = { href =>'/adm/menu',
+ title =>'Go to main menu',
+ target =>'_top',
+ text =>$description,
+ no_mt =>$no_mt_descr, };
+ if($last) {
+ #$last set, so we have some crumbs
+ unshift(@Crumbs,$menulink);
} else {
- my $description = 'Menu';
- my $href = '/adm/menu';
- my $tooltip = 'Go to main menu';
- my $no_mt_descr = 0;
- if ((exists($env{'request.course.id'})) &&
- ($env{'request.course.id'} ne '') &&
- !($env{'form.context'} eq 'requestcrs')) {
- if ((&Apache::loncommon::needs_gci_custom()) || ($env{'user.domain'} eq 'gcitest')) {
- if ($env{'environment.remotenavmap'} eq 'on') {
- # open link using javascript when remote navmap is activated
- $href = "javascript:gonav('/adm/navmaps');";
- } else {
- $href = '/adm/navmaps';
- }
- $tooltip = 'Contents';
- }
- if ($env{'course.'.$env{'request.course.id'}.'.description'} ne '') {
- $description =
- $env{'course.'.$env{'request.course.id'}.'.description'};
- $no_mt_descr = 1;
- }
- }
- $menulink = { href => $href,
- title => $tooltip,
- target => '_top',
- text => $description,
- no_mt => $no_mt_descr, };
- if ($last) {
- #$last set, so we have some crumbs
- unshift(@Crumbs,$menulink);
- } else {
- #only menulink crumb present
- $last = $menulink;
- }
+ #only menulink crumb present
+ $last = $menulink;
}
}
my $links = join "",
- map {
- $faq = $_->{'faq'} if (exists($_->{'faq'}));
- $bug = $_->{'bug'} if (exists($_->{'bug'}));
- $help = $_->{'help'} if (exists($_->{'help'}));
-
- my $result = $_->{no_mt} ? $_->{text} : mt($_->{text});
-
- if ($_->{href}){
- $result = htmltag( 'a', $result,
- {
- href => $_->{href},
- title => $_->{no_mt} ?
- $_->{title} : mt($_->{title}),
- target => $_->{target},
- });
- }
+ map {
+ $faq = $_->{'faq'} if (exists($_->{'faq'}));
+ $bug = $_->{'bug'} if (exists($_->{'bug'}));
+ $help = $_->{'help'} if (exists($_->{'help'}));
+
+ my $result = $_->{no_mt} ? $_->{text} : mt($_->{text});
+
+ if ($_->{href}){
+ $result = htmltag( 'a', $result,
+ { href => $_->{href},
+ title => $_->{no_mt} ? $_->{title} : mt($_->{title}),
+ target => $_->{target}, });
+ }
- $result = htmltag( 'li', "$result $crumbsymbol");
- } @Crumbs;
+ $result = htmltag( 'li', "$result $crumbsymbol");
+ } @Crumbs;
#should the last Element be translated?
- my $lasttext = $last->{'no_mt'} ? $last->{'text'}
+ my $lasttext = $last->{'no_mt'} ? $last->{'text'}
: mt( $last->{'text'} );
- # last breadcrumb is the first order heading of a page
- # for course breadcrumbs it's just bold
- $links .= htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1',
- $lasttext), {title => $lasttext});
+ $links .= htmltag( 'li', htmltag('b', $lasttext), {title => $lasttext});
my $icons = '';
$faq = $last->{'faq'} if (exists($last->{'faq'}));
@@ -1506,24 +1542,24 @@ returns: nothing
Adds $html to $category of the breadcrumb toolbar container.
-$html is usually a link to a page that invokes a function on the currently
+$html is usually a link to a page that invokes a function on the currently
displayed data (e.g. print when viewing a problem)
-Currently there are 3 possible values for $category:
+Currently there are 3 possible values for $category:
-=over
+=over
-=item navigation
+=item navigation
left of breadcrumbs line
-=item tools
+=item tools
right of breadcrumbs line
-=item advtools
-advanced tools shown in a separate box below breadcrumbs line
+=item advtools
+advanced tools shown in a separate box below breadcrumbs line
=back
-
+
returns: nothing
=cut
@@ -1531,16 +1567,16 @@ returns: nothing
sub add_breadcrumb_tool {
my ($category, @html) = @_;
return unless @html;
- if (!defined(%tools)) {
+ if (!defined(%tools)) {
%tools = ( navigation => [], tools => [], advtools => []);
}
#this cleans data received from lonmenu::innerregister
@html = grep {defined $_ && $_ ne ''} @html;
- for (@html) {
- s/align="(right|left)"//;
- s/// if $category ne 'advtools';
- }
+ for (@html) {
+ s/align="(right|left)"//;
+ s/// if $category ne 'advtools';
+ }
push @{$tools{$category}}, @html;
}
@@ -1559,10 +1595,10 @@ returns: nothing
=item render_tools(\$breadcrumbs)
-Creates html for breadcrumb tools (categories navigation and tools) and inserts
+Creates html for breadcrumb tools (categories navigation and tools) and inserts
\$breadcrumbs at the correct position.
-input: \$breadcrumbs - a reference to the string containing prepared
+input: \$breadcrumbs - a reference to the string containing prepared
breadcrumbs.
returns: nothing
@@ -1573,35 +1609,32 @@ returns: nothing
my ($breadcrumbs) = @_;
return unless defined %tools;
- my $navigation = list_from_array($tools{navigation},
+ my $navigation = list_from_array($tools{navigation},
{ listattr => { class=>"LC_breadcrumb_tools_navigation" } });
- my $tools = list_from_array($tools{tools},
+ my $tools = list_from_array($tools{tools},
{ listattr => { class=>"LC_breadcrumb_tools_tools" } });
- $$breadcrumbs = list_from_array([$navigation, $tools, $$breadcrumbs],
+ $$breadcrumbs = list_from_array([$navigation, $tools, $$breadcrumbs],
{ listattr => { class=>'LC_breadcrumb_tools_outerlist' } });
}
-=item render_advtools(\$breadcrumbs,$legend)
+=item render_advtools(\$breadcrumbs)
-Creates html for advanced tools (category advtools) and inserts \$breadcrumbs
+Creates html for advanced tools (category advtools) and inserts \$breadcrumbs
at the correct position.
-input: \$breadcrumbs - a reference to the string containing prepared
+input: \$breadcrumbs - a reference to the string containing prepared
breadcrumbs (after render_tools call).
returns: nothing
=cut
sub render_advtools {
- my ($breadcrumbs,$legend) = @_;
- return unless (defined $tools{'advtools'})
+ my ($breadcrumbs) = @_;
+ return unless (defined $tools{'advtools'})
and (scalar(@{$tools{'advtools'}}) > 0);
- my $args;
- if ($legend) {
- $args = {legend => $legend};
- }
+
$$breadcrumbs .= Apache::loncommon::head_subbox(
- funclist_from_array($tools{'advtools'},$args));
+ funclist_from_array($tools{'advtools'}) );
}
} # End of scope for @Crumbs
@@ -1735,6 +1768,7 @@ ENDTWO
} # End: row_count block for pick_box
+
sub role_select_row {
my ($roles,$title,$css_class,$show_separate_custom,$cdom,$cnum) = @_;
my $crstype = 'Course';
@@ -2315,29 +2349,28 @@ sub scripttag {
Constructs a XHTML list from \@array.
-input:
+input:
=over
-=item \@array
+=item \@array
A reference to the array containing text that will be wrapped in tags.
-=item { listattr => {}, itemattr =>{} }
+=item { listattr => {}, itemattr =>{} }
-Attributes for and - passed in as hash references.
+Attributes for
and - passed in as hash references.
See htmltag() for more details.
=back
+
+returns: XHTML list as String.
-returns: XHTML list as String.
-
-=cut
+=cut
# \@items, {listattr => { class => 'abc', id => 'xyx' }, itemattr => {class => 'abc', id => 'xyx'}}
sub list_from_array {
my ($items, $args) = @_;
- return unless scalar @$items;
my ($ul, $li) = inittags( qw(ul li) );
my $listitems = join '', map { $li->($_, $args->{itemattr}) } @$items;
return $ul->( $listitems, $args->{listattr} );
@@ -2388,15 +2421,11 @@ sub generate_menu {
# create the markup for the current $link and push it into @links.
# each entry consists of an image and a text optionally followed
# by a help link.
- my $src;
- if ($$link{icon} ne '') {
- $src = '/res/adm/pages/'.$$link{icon};
- }
push(@links,$li->(
$a->(
$img->("", {
class => "LC_noBorder LC_middle",
- src => $src,
+ src => "/res/adm/pages/$$link{icon}",
alt => mt(defined($$link{alttext}) ?
$$link{alttext} : $$link{linktext})
}), {
@@ -2526,7 +2555,7 @@ sub end_funclist {
Constructs a XHTML list from \@array with the first item being visually
highlighted and set to the value of legend or 'Functions' if legend is
-empty.
+empty.
=over
@@ -2540,19 +2569,19 @@ A string that's used as visually highlig
it's value evaluates to false.
=back
-
-returns: XHTML list as string.
+
+returns: XHTML list as string.
=back
-=cut
+=cut
sub funclist_from_array {
my ($items, $args) = @_;
$args->{legend} ||= mt('Functions');
- return list_from_array( [$args->{legend}, @$items],
+ return list_from_array( [$args->{legend}, @$items],
{ listattr => {class => 'LC_funclist'} });
-}
+}
1;