--- loncom/interface/lonhtmlcommon.pm 2009/08/11 13:01:10 1.231
+++ loncom/interface/lonhtmlcommon.pm 2009/11/25 13:25:44 1.250
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.231 2009/08/11 13:01:10 droeschl Exp $
+# $Id: lonhtmlcommon.pm,v 1.250 2009/11/25 13:25:44 droeschl Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -62,6 +62,16 @@ use Apache::lonlocal;
use Apache::lonnet;
use LONCAPA;
+
+sub coursepreflink {
+ my ($text,$category)=@_;
+ if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) {
+ return ''.$text.'';
+ } else {
+ return '';
+ }
+}
+
##############################################
##############################################
@@ -82,7 +92,7 @@ sub confirm_success {
.''."\n";
} else {
return ''."\n"
- .' '."\n"
+ .' '."\n"
.$message."\n"
.''."\n";
}
@@ -111,7 +121,7 @@ sub dragmath_button {
}
my $buttontext=&mt('Edit Math');
return <$help_text
+ $help_text
ENDDRAGMATH
}
@@ -160,8 +170,8 @@ sub authorbombs {
$url=&Apache::lonnet::declutter($url);
my ($udom,$uname)=($url=~m{^($LONCAPA::domain_re)/($LONCAPA::username_re)/});
my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom);
- foreach (keys %bombs) {
- if ($_=~/^$udom\/$uname\//) {
+ foreach my $bomb (keys(%bombs)) {
+ if ($bomb =~ /^$udom\/$uname\//) {
return ''.
&Apache::loncommon::help_open_topic('About_Bombs');
@@ -239,7 +249,7 @@ sub get_recent {
# Begin filling return_hash with any 'always_include' option
my %time_hash = ();
my %return_hash = ();
- foreach my $item (keys %recent) {
+ foreach my $item (keys(%recent)) {
my ($thistime,$thisvalue)=(split(/\&/,$recent{$item}));
if ($thistime eq 'always_include') {
$return_hash{$item} = &unescape($thisvalue);
@@ -1128,7 +1138,7 @@ sub crumbs {
my $output='';
unless ($noformat) { $output.=' '; }
$output.=''.$prefix.'/';
- if ($env{'user.adv'}) {
+ if (($env{'user.adv'}) || ($env{'user.author'})) {
my $path=$prefix.'/';
foreach my $dir (split('/',$uri)) {
if (! $dir) { next; }
@@ -1342,6 +1352,7 @@ returns: nothing
############################################################
{
my @Crumbs;
+ my %tools = ();
sub breadcrumbs {
my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt, $CourseBreadcrumbs) = @_;
@@ -1438,8 +1449,12 @@ returns: nothing
.$links;
}
+ #SD START (work in progress!)
+ add_tools(\$links);
+ #SD END
$links = htmltag('div', $links,
{ id => "LC_breadcrumbs" }) unless ($CourseBreadcrumbs) ;
+ add_advtools(\$links);
# Return the @Crumbs stack to what we started with
push(@Crumbs,$last);
@@ -1450,12 +1465,63 @@ returns: nothing
sub clear_breadcrumbs {
undef(@Crumbs);
+ undef(%tools);
}
sub add_breadcrumb {
- push (@Crumbs,@_);
+ push(@Crumbs,@_);
+ }
+
+
+ #SD START (work in progress!)
+ sub add_breadcrumb_tool {
+ my ($category, $html) = @_;
+ return unless $html;
+ if (!defined(%tools)) {
+ my %tools = ( A => [], B => [], C => []);
+ }
+ push @{$tools{$category}}, $html;
+ }
+
+ sub clear_breadcrumb_tools {
+ undef(%tools);
+ }
+
+ sub add_tools {
+ my ($links) = @_;
+ return unless defined %tools;
+ my $html = '
';
+ for my $category ('A','B') {
+ $html .= '
'
+ . '
";
+ for my $item (@{$tools{$category}}){
+ #SD ugly! I'll fix that later on
+ $item =~ s/align="(right|left)"//;
+ $item =~ s///;
+ $html .= "
$item
";
+ }
+ $html .= '
';
+ if ($category eq 'A') { $html .= "
$$links
"; }
+ }
+ $$links = $html.'
';
}
+ sub add_advtools {
+ my ($links) = @_;
+ return unless (defined $tools{'C'}) and (scalar (@{$tools{'C'}}) > 0);
+ my $html = start_funclist();
+ for my $item (@{$tools{'C'}}){
+ next unless $item;
+ $item =~ s/align="(right|left)"//;
+ $html .= add_item_funclist($item);
+ }
+ $html .= end_funclist();
+ $html = Apache::loncommon::head_subbox($html);
+ $$links .= $html;
+ }
+ #SD END
+
} # End of scope for @Crumbs
############################################################
@@ -1547,7 +1613,7 @@ END
}
sub row_title {
- my ($title,$css_title_class,$css_value_class) = @_;
+ my ($title,$css_title_class,$css_value_class, $css_value_furtherAttributes) = @_;
$row_count[0]++;
my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';
$css_title_class ||= 'LC_pick_box_title';
@@ -1559,7 +1625,7 @@ sub row_title {
$title .= ':';
}
my $output = <<"ENDONE";
-
+
$title
@@ -1590,6 +1656,10 @@ ENDTWO
sub role_select_row {
my ($roles,$title,$css_class,$show_separate_custom,$cdom,$cnum) = @_;
+ my $crstype = 'Course';
+ if ($cdom ne '' && $cnum ne '') {
+ $crstype = &Apache::loncommon::course_type($cdom.'_'.$cnum);
+ }
my $output;
if (defined($title)) {
$output = &row_title($title,$css_class);
@@ -1614,7 +1684,7 @@ sub role_select_row {
$plrole = &mt('Custom Role');
}
} else {
- $plrole=&Apache::lonnet::plaintext($role);
+ $plrole=&Apache::lonnet::plaintext($role,$crstype);
}
if (($role ne 'cr') || (!$show_separate_custom)) {
$output .= ' ';
@@ -1629,15 +1699,15 @@ sub role_select_row {
sub course_select_row {
my ($title,$formname,$totcodes,$codetitles,$idlist,$idlist_titles,
- $css_class) = @_;
+ $css_class,$crstype) = @_;
my $output = &row_title($title,$css_class);
- $output .= &course_selection($formname,$totcodes,$codetitles,$idlist,$idlist_titles);
+ $output .= &course_selection($formname,$totcodes,$codetitles,$idlist,$idlist_titles,$crstype);
$output .= &row_closure();
return $output;
}
sub course_selection {
- my ($formname,$totcodes,$codetitles,$idlist,$idlist_titles) = @_;
+ my ($formname,$totcodes,$codetitles,$idlist,$idlist_titles,$crstype) = @_;
my $output = qq|
|;
+
+ my ($allcrs,$pickspec);
+ if ($crstype eq 'Community') {
+ $allcrs = &mt('All communities');
+ $pickspec = &mt('Pick specific communities:');
+ } else {
+ $allcrs = &mt('All courses');
+ $pickspec = &mt('Pick specific course(s):');
+ }
+
my $courseform=''.&Apache::loncommon::selectcourse_link
- ($formname,'pickcourse','pickdomain','coursedesc','',1).'';
- $output .= ''.&mt('All courses').' ';
+ ($formname,'pickcourse','pickdomain','coursedesc','',1,$crstype).'';
+ $output .= ''.$allcrs.' ';
if ($totcodes > 0) {
my $numtitles = @$codetitles;
if ($numtitles > 0) {
@@ -1713,7 +1793,7 @@ sub course_selection {
$output .= '
';
}
}
- $output .= ''.&mt('Pick specific course(s):').' '.$courseform.' selected. '."\n";
+ $output .= ''.$pickspec.' '.$courseform.' selected. '."\n";
return $output;
}
@@ -1801,16 +1881,21 @@ sub course_custom_roles {
# topic_bar
#
-# Generates a div containing a numbered (static image) followed by a title
-# with a background color defined in the corresponding CSS: LC_topic_bar
-#
+# Generates a div containing an (optional) number with a white background followed by a
+# title with a background color defined in the corresponding CSS: LC_topic_bar
+# Inputs:
+# 1. number to display.
+# If input for number is empty only the title will be displayed.
+# 2. title text to display.
+# Outputs - a scalar containing html mark-up for the div.
+
sub topic_bar {
- my ($imgnum,$title) = @_;
- return '
'
- .''
- .' '.$title
- .'
';
+ my ($num,$title) = @_;
+ my $number = '';
+ if ($num ne '') {
+ $number = ''.$num.'';
+ }
+ return '
'.$number.$title.'
';
}
##############################################
@@ -1945,7 +2030,7 @@ sub set_form_elements {
$values{$name}[$i] =~ s/([\r\n\f]+)/\\n/g;
$values{$name}[$i] =~ s/"/\\"/g;
}
- if ($$elements{$name} eq 'text') {
+ if (($$elements{$name} eq 'text') || ($$elements{$name} eq 'hidden')) {
my $numvalues = @{$values{$name}};
if ($numvalues > 1) {
my $valuestring = join('","',@{$values{$name}});
@@ -1980,6 +2065,8 @@ sub set_form_elements {
$output .= qq|
if (courseForm.elements['$name'].value == "$value") {
courseForm.elements['$name'].checked = true;
+ } else {
+ courseForm.elements['$name'].checked = false;
}|;
}
}
@@ -2021,6 +2108,7 @@ sub set_form_elements {
}
}
$output .= "
+ return;
}\n";
return $output;
}
@@ -2194,7 +2282,7 @@ 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.
- push @links, $li->(
+ push(@links,$li->(
$a->(
$img->("", {
class => "LC_noBorder LC_middle",
@@ -2212,7 +2300,7 @@ sub generate_menu {
}).
(defined($$link{help}) ?
Apache::loncommon::help_open_topic($$link{help}) : ''),
- {class => "LC_menubuttons_inline_text"});
+ {class => "LC_menubuttons_inline_text"}));
}
# wrap categorytitle in
, concatenate with
@@ -2222,10 +2310,10 @@ sub generate_menu {
# such that each element looks like:
#
title
...
...
# the category won't be added if there aren't any links
- push @categories,
+ push(@categories,
$div->($h3->(mt($$category{categorytitle}), {class=>"LC_hcell"}).
$ul->(join('' ,@links), {class =>"LC_ListStyleNormal" }),
- {class=>"LC_Box LC_400Box"}) if scalar(@links);
+ {class=>"LC_Box LC_400Box"})) if scalar(@links);
}
# wrap the joined @categories in another
(column layout)
@@ -2268,8 +2356,7 @@ Returns: HTML code with function list st
sub start_funclist {
my($legendtext)=@_;
$legendtext=&mt('Functions') if !$legendtext;
- return "\n";
+ return "\n";
}
1;