version 1.192, 2008/12/05 10:23:56
|
version 1.215, 2009/05/16 21:50:52
|
Line 62 use Apache::lonlocal;
|
Line 62 use Apache::lonlocal;
|
use Apache::lonnet; |
use Apache::lonnet; |
use LONCAPA; |
use LONCAPA; |
|
|
|
############################################## |
|
############################################## |
|
|
|
=pod |
|
|
|
=item confirm_success |
|
|
|
Successful completion of an operation message |
|
|
|
=cut |
|
|
|
sub confirm_success { |
|
my ($message,$failure)=@_; |
|
if ($failure) { |
|
return '<span class="LC_error">'."\n" |
|
.'<img src="/adm/lonIcons/navmap.wrong.gif" /> '."\n" |
|
.$message."\n" |
|
.'</span>'."\n"; |
|
} else { |
|
return '<span class="LC_success">'."\n" |
|
.'<img src="/adm/lonIcons/navmap.correct.gif" /> '."\n" |
|
.$message."\n" |
|
.'</span>'."\n"; |
|
} |
|
} |
|
|
############################################## |
############################################## |
############################################## |
############################################## |
Line 285 sub checkbox {
|
Line 310 sub checkbox {
|
$Str .= 'value="'.$value.'"'; |
$Str .= 'value="'.$value.'"'; |
} |
} |
if ($checked) { |
if ($checked) { |
$Str .= ' checked="1"'; |
$Str .= ' checked="checked"'; |
} |
} |
$Str .= ' />'; |
$Str .= ' />'; |
return $Str; |
return $Str; |
Line 307 sub radio {
|
Line 332 sub radio {
|
$Str .= 'value="'.$value.'"'; |
$Str .= 'value="'.$value.'"'; |
} |
} |
if ($checked eq $value) { |
if ($checked eq $value) { |
$Str .= ' checked="1"'; |
$Str .= ' checked="checked"'; |
} |
} |
$Str .= ' />'; |
$Str .= ' />'; |
return $Str; |
return $Str; |
Line 955 sub Create_PrgWin {
|
Line 980 sub Create_PrgWin {
|
popwin=open(\'\',\'popwin\',\'width=400,height=100\');". |
popwin=open(\'\',\'popwin\',\'width=400,height=100\');". |
"popwin.document.writeln(\'".$start_page. |
"popwin.document.writeln(\'".$start_page. |
"<h4>".&mt("$heading")."<\/h4>". |
"<h4>".&mt("$heading")."<\/h4>". |
"<form action= \"\" name=\"popremain\" method=\"post\">". |
"<form action=\"\" name=\"popremain\" method=\"post\">". |
'<input type="text" size="'.$width.'" name="remaining" value="'. |
'<input type="text" size="'.$width.'" name="remaining" value="'. |
&mt('Starting').'" /><\\/form>'.$end_page. |
&mt('Starting').'" /><\\/form>'.$end_page. |
"\');". |
"\');". |
Line 1278 Inputs: $component (the large text on th
|
Line 1303 Inputs: $component (the large text on th
|
$menulink (boolean, controls whether to include a link to /adm/menu) |
$menulink (boolean, controls whether to include a link to /adm/menu) |
$helplink (if 'nohelp' don't include the orange help link) |
$helplink (if 'nohelp' don't include the orange help link) |
$css_class (optional name for the class to apply to the table for CSS) |
$css_class (optional name for the class to apply to the table for CSS) |
|
$no_mt (optional flag, 1 if &mt() is _not_ to be applied to $component |
|
when including the text on the right. |
Returns a string containing breadcrumbs for the current page. |
Returns a string containing breadcrumbs for the current page. |
|
|
=item clear_breadcrumbs |
=item clear_breadcrumbs |
Line 1303 returns: nothing
|
Line 1330 returns: nothing
|
my @Crumbs; |
my @Crumbs; |
|
|
sub breadcrumbs { |
sub breadcrumbs { |
my ($component,$component_help,$menulink,$helplink,$css_class) = @_; |
my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt, $no_realBreadcrumb) = @_; |
# |
# |
$css_class ||= 'LC_breadcrumbs'; |
$css_class ||= 'LC_breadcrumbs'; |
my $Str = "\n".'<table class="'.$css_class.'"><tr><td>'; |
my $Str1 = '<div id="LC_head_subbox"><ol id="LC_MenuBreadcrumbs">'; |
|
|
|
if($no_realBreadcrumb){ |
|
$Str1 = '<ul class="LC_CourseBreadcrumbs">'; |
|
} |
|
|
|
my $Str = ''; |
# |
# |
# Make the faq and bug data cascade |
# Make the faq and bug data cascade |
my $faq = ''; |
my $faq = ''; |
my $bug = ''; |
my $bug = ''; |
my $help=''; |
my $help=''; |
# Crumb Symbol |
# Crumb Symbol |
my $crumbsymbol = ' ▶ '; |
my $crumbsymbol = '» '; |
# The last breadcrumb does not have a link, so handle it separately. |
# The last breadcrumb does not have a link, so handle it separately. |
my $last = pop(@Crumbs); |
my $last = pop(@Crumbs); |
# |
# |
# The first one should be the course or a menu link |
# The first one should be the course or a menu link |
if (!defined($menulink)) { $menulink=1; } |
if (!defined($menulink)) { $menulink=1; } |
if ($menulink) { |
if ($menulink) { |
my $description = 'Menu'; |
my $description = 'Menu'; |
my $no_mt_descr = 0; |
my $no_mt_descr = 0; |
Line 1328 returns: nothing
|
Line 1361 returns: nothing
|
$env{'course.'.$env{'request.course.id'}.'.description'}; |
$env{'course.'.$env{'request.course.id'}.'.description'}; |
$no_mt_descr = 1; |
$no_mt_descr = 1; |
} |
} |
unshift(@Crumbs,{ |
$menulink = { href =>'/adm/menu', |
href =>'/adm/menu', |
title =>'Go to main menu', |
title =>'Go to main menu', |
target =>'_top', |
target =>'_top', |
text =>$description, |
text =>$description, |
no_mt =>$no_mt_descr, }; |
no_mt =>$no_mt_descr, |
if($last) { |
}); |
#$last set, so we have some crumbs |
|
unshift(@Crumbs,$menulink); |
|
} else { |
|
#only menulink crumb present |
|
$last = $menulink; |
|
} |
} |
} |
my $links .= |
my $links .= '<li>'. |
join($crumbsymbol, |
join('</li><li>'.$crumbsymbol, |
map { |
map { |
$faq = $_->{'faq'} if (exists($_->{'faq'})); |
$faq = $_->{'faq'} if (exists($_->{'faq'})); |
$bug = $_->{'bug'} if (exists($_->{'bug'})); |
$bug = $_->{'bug'} if (exists($_->{'bug'})); |
Line 1346 returns: nothing
|
Line 1384 returns: nothing
|
if (defined($_->{'target'}) && $_->{'target'} ne '') { |
if (defined($_->{'target'}) && $_->{'target'} ne '') { |
$result .= 'target="'.$_->{'target'}.'" '; |
$result .= 'target="'.$_->{'target'}.'" '; |
} |
} |
|
# set the possible translation for title |
if ($_->{'no_mt'}) { |
if ($_->{'no_mt'}) { |
$result .='title="'.$_->{'title'}.'">'. |
$result .='title="'.$_->{'title'}.'">'. |
$_->{'text'}.'</a>'; |
$_->{'text'}.'</a>'; |
Line 1355 returns: nothing
|
Line 1394 returns: nothing
|
} |
} |
$result; |
$result; |
} @Crumbs |
} @Crumbs |
); |
).'</li>'; |
$links .= $crumbsymbol if ($links ne ''); |
#Workaround for edit course. |
|
if(@Crumbs == 0 ){ |
|
$links .= '<li>' if ($links ne ''); |
|
} else { |
|
$links .= '<li>'.$crumbsymbol if ($links ne ''); |
|
} |
|
#should the last Element be translated? |
if ($last->{'no_mt'}) { |
if ($last->{'no_mt'}) { |
$links .= '<b>'.$last->{'text'}.'</b>'; |
$links .= '<b>'.$last->{'text'}.'</b>'; |
} else { |
} else { |
$links .= '<b>'.&mt($last->{'text'}).'</b>'; |
$links .= '<b>'.&mt($last->{'text'}).'</b>'; |
} |
} |
# |
$links .= '</li>'; |
my $icons = ''; |
my $icons = ''; |
$faq = $last->{'faq'} if (exists($last->{'faq'})); |
$faq = $last->{'faq'} if (exists($last->{'faq'})); |
$bug = $last->{'bug'} if (exists($last->{'bug'})); |
$bug = $last->{'bug'} if (exists($last->{'bug'})); |
Line 1380 returns: nothing
|
Line 1425 returns: nothing
|
$faq,$bug); |
$faq,$bug); |
} |
} |
# |
# |
$Str .= $links.'</td>'; |
|
|
|
|
if($no_realBreadcrumb){ |
|
$Str1 .= $links.'</ul>'; |
|
} else { |
|
$Str1 .= $links.'</ol></div>'; |
|
} |
# |
# |
if (defined($component)) { |
if (defined($component)) { |
$Str .= '<td class="'.$css_class.'_component">'. |
$Str .= "\n".'<table class="'.$css_class.'">' |
&mt($component); |
.'<tr><td class="'.$css_class.'_component">'; |
|
if ($no_mt) { |
|
$Str .= $component; |
|
} else { |
|
$Str .= &mt($component); |
|
} |
if ($icons ne '') { |
if ($icons ne '') { |
$Str .= ' '.$icons; |
$Str .= ' '.$icons; |
} |
} |
$Str .= '</td>'; |
$Str .= '</td></tr></table>'."\n"; |
} |
} |
$Str .= '</tr></table>'."\n"; |
|
# |
# |
# Return the @Crumbs stack to what we started with |
# Return the @Crumbs stack to what we started with |
push(@Crumbs,$last); |
push(@Crumbs,$last); |
shift(@Crumbs); |
shift(@Crumbs); |
# |
# Return a table and after that the breadcrumb's line |
return $Str; |
return "$Str\n$Str1"; |
} |
} |
|
|
sub clear_breadcrumbs { |
sub clear_breadcrumbs { |
Line 1465 returns: nothing
|
Line 1520 returns: nothing
|
# routines, but can also be called directly to start and end rows which have |
# routines, but can also be called directly to start and end rows which have |
# needs that are not accommodated by the *_select_row() routines. |
# needs that are not accommodated by the *_select_row() routines. |
|
|
|
{ # Start: row_count block for pick_box |
|
my @row_count; |
|
|
sub start_pick_box { |
sub start_pick_box { |
my ($css_class) = @_; |
my ($css_class) = @_; |
if (defined($css_class)) { |
if (defined($css_class)) { |
Line 1472 sub start_pick_box {
|
Line 1530 sub start_pick_box {
|
} else { |
} else { |
$css_class= 'class="LC_pick_box"'; |
$css_class= 'class="LC_pick_box"'; |
} |
} |
|
unshift(@row_count,0); |
my $output = <<"END"; |
my $output = <<"END"; |
<table $css_class> |
<table $css_class> |
END |
END |
Line 1479 END
|
Line 1538 END
|
} |
} |
|
|
sub end_pick_box { |
sub end_pick_box { |
|
shift(@row_count); |
my $output = <<"END"; |
my $output = <<"END"; |
</table> |
</table> |
END |
END |
Line 1494 END
|
Line 1554 END
|
|
|
sub row_title { |
sub row_title { |
my ($title,$css_title_class,$css_value_class) = @_; |
my ($title,$css_title_class,$css_value_class) = @_; |
|
$row_count[0]++; |
|
my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row'; |
$css_title_class ||= 'LC_pick_box_title'; |
$css_title_class ||= 'LC_pick_box_title'; |
$css_title_class = 'class="'.$css_title_class.'"'; |
$css_title_class = 'class="'.$css_title_class.'"'; |
|
|
$css_value_class ||= 'LC_pick_box_value'; |
$css_value_class ||= 'LC_pick_box_value'; |
$css_value_class = 'class="'.$css_value_class.'"'; |
|
|
|
if ($title ne '') { |
if ($title ne '') { |
$title .= ':'; |
$title .= ':'; |
Line 1508 sub row_title {
|
Line 1569 sub row_title {
|
<td $css_title_class> |
<td $css_title_class> |
$title |
$title |
</td> |
</td> |
<td $css_value_class> |
<td class="$css_value_class $css_class"> |
ENDONE |
ENDONE |
return $output; |
return $output; |
} |
} |
Line 1530 ENDTWO
|
Line 1591 ENDTWO
|
return $output; |
return $output; |
} |
} |
|
|
|
} # End: row_count block for pick_box |
|
|
|
|
sub role_select_row { |
sub role_select_row { |
my ($roles,$title,$css_class,$show_separate_custom,$cdom,$cnum) = @_; |
my ($roles,$title,$css_class,$show_separate_custom,$cdom,$cnum) = @_; |
my $output; |
my $output; |
Line 1537 sub role_select_row {
|
Line 1601 sub role_select_row {
|
$output = &row_title($title,$css_class); |
$output = &row_title($title,$css_class); |
} |
} |
$output .= qq| |
$output .= qq| |
<select name="roles" multiple >\n|; |
<select name="roles" multiple="multiple">\n|; |
foreach my $role (@$roles) { |
foreach my $role (@$roles) { |
my $plrole; |
my $plrole; |
if ($role eq 'ow') { |
if ($role eq 'ow') { |
Line 1664 sub status_select_row {
|
Line 1728 sub status_select_row {
|
$output = &row_title($title,$css_class,'LC_pick_box_select'); |
$output = &row_title($title,$css_class,'LC_pick_box_select'); |
} |
} |
$output .= qq| |
$output .= qq| |
<select name="types" multiple>\n|; |
<select name="types" multiple="multiple">\n|; |
foreach my $status_type (sort(keys(%{$types}))) { |
foreach my $status_type (sort(keys(%{$types}))) { |
$output .= ' <option value="'.$status_type.'">'.$$types{$status_type}.'</option>'; |
$output .= ' <option value="'.$status_type.'">'.$$types{$status_type}.'</option>'; |
} |
} |
Line 1750 sub topic_bar {
|
Line 1814 sub topic_bar {
|
return ' |
return ' |
<div class="LC_topic_bar"> |
<div class="LC_topic_bar"> |
<img alt="'.&mt('Step [_1]',$imgnum). |
<img alt="'.&mt('Step [_1]',$imgnum). |
'"src="/res/adm/pages/bl_step'.$imgnum.'.gif" /> |
' "src="/res/adm/pages/bl_step'.$imgnum.'.gif" /> |
<span>'.$title.'</span> |
<span>'.$title.'</span> |
</div> |
</div> |
'; |
'; |
Line 2016 END
|
Line 2080 END
|
# An array of following structure: |
# An array of following structure: |
# ({ categorytitle => 'Categorytitle', |
# ({ categorytitle => 'Categorytitle', |
# items => [ |
# items => [ |
# { linktext => 'Text to be displayed', |
# { |
# url => 'URL the link is pointing to, i.e. /adm/site?action=dosomething', |
# linktext => 'Text to be displayed', |
|
# url => 'URL the link is pointing to, i.e. /adm/site?action=dosomething', |
# permission => 'Contains permissions as returned from lonnet::allowed(), |
# permission => 'Contains permissions as returned from lonnet::allowed(), |
# must evaluate to true in order to activate the link', |
# must evaluate to true in order to activate the link', |
# icon => 'icon filename', |
# icon => 'icon filename', |
# alttext => 'alt text for the icon', |
# alttext => 'alt text for the icon', |
# help => 'Name of the corresponding helpfile', |
# help => 'Name of the corresponding helpfile', |
Line 2038 END
|
Line 2103 END
|
# subject to change during this project. |
# subject to change during this project. |
# Don't rely on its current functionality as it might be |
# Don't rely on its current functionality as it might be |
# changed or removed. |
# changed or removed. |
# TODO: |
|
# check for empty values |
|
# -------------------------- |
# -------------------------- |
|
|
sub generate_menu { |
sub generate_menu { |
my @menu = @_; |
my @menu = @_; |
my $menu_html = qq|<div class="columnSection">|; |
|
|
|
foreach my $category (@menu) { #FIXME: insert appropriate classnames for styles when they're finished. |
# usage: $wrap->(element, content, {attribute => value,...}); |
$menu_html .='<div class="ContentBoxSpecial"> |
# output: content enclosed in html conform tags |
<h3 class="hcell">'.mt($category->{'categorytitle'}).'</h3> |
my $wrap = sub { |
<ul class="ListStyleNormal">'; |
return |
foreach my $item ( @{ $category->{items} } ) { |
qq|<$_[0]| |
next unless $item->{'permission'}; |
. join( '', map { qq| $_="${$_[2]}{$_}"| } keys %{ $_[2] } ) |
$menu_html .= qq|<li class="LC_menubuttons_inline_text"><a href="$item->{'url'}" title="|.mt($item->{'linktitle'}).'">'; |
. ($_[1] ? qq|>$_[1]</$_[0]>| : qq|/>|). "\n"; |
if($item->{'icon'}){ |
}; |
$menu_html .= qq|<img class ="noBorder middle" src="/res/adm/pages/$item->{'icon'}" alt="|; |
|
if($item->{'alttext'}){ |
# subs for specific html elements |
$menu_html .= $item->{'alttext'}.'"/></a>'; |
my $h3 = sub { return $wrap->( "h3", @_ ) }; |
} else { #use linktext as alt text for the icon |
my $div = sub { return $wrap->( "div", @_ ) }; |
$menu_html .= qq|$item->{'linktext'}"/></a>|; |
my $ul = sub { return $wrap->( "ul", @_ ) }; |
} |
my $li = sub { return $wrap->( "li", @_ ) }; |
} |
my $a = sub { return $wrap->( "a", @_ ) }; |
$menu_html .= qq|<a href="$item->{'url'}" title="|.mt($item->{'linktitle'}).'">'; |
my $img = sub { return $wrap->( "img", @_ ) }; |
$menu_html .= mt($item->{'linktext'}).'</a>'; |
|
if (exists($item->{'help'})) { |
my @categories; # each element represents the entire markup for a category |
$menu_html .= Apache::loncommon::help_open_topic($item->{'help'}); |
|
} |
foreach my $category (@menu) { |
$menu_html .= '</li>'; |
my @links; # contains the links for the current $category |
} |
foreach my $link (@{$$category{items}}) { |
$menu_html .= '</div>'; |
next unless $$link{permission}; |
|
|
|
# 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->( |
|
$a->( |
|
$img->("", { |
|
class => "LC_noBorder LC_middle", |
|
src => "/res/adm/pages/$$link{icon}", |
|
alt => mt(defined($$link{alttext}) ? |
|
$$link{alttext} : $$link{linktext}) |
|
}), { |
|
href => $$link{url}, |
|
title => mt($$link{linktitle}) |
|
}). |
|
$a->(mt($$link{linktext}), { |
|
href => $$link{url}, |
|
title => mt($$link{linktitle}), |
|
class => "LC_menubuttons_link" |
|
}). |
|
(defined($$link{help}) ? |
|
Apache::loncommon::help_open_topic($$link{help}) : ''), |
|
{class => "LC_menubuttons_inline_text"}); |
|
} |
|
|
|
# wrap categorytitle in <h3>, concatenate with |
|
# joined and in <ul> tags wrapped @links |
|
# and wrap everything in an enclosing <div> and push it into |
|
# @categories |
|
# such that each element looks like: |
|
# <div><h3>title</h3><ul><li>...</li>...</ul></div> |
|
# the category won't be added if there aren't any links |
|
push @categories, |
|
$div->($h3->(mt($$category{categorytitle}), {class=>"LC_hcell"}). |
|
$ul->(join('' ,@links), {class =>"LC_ListStyleNormal" }), |
|
{class=>"LC_ContentBoxSpecial LC_400Box"}) if scalar(@links); |
} |
} |
$menu_html .= qq|</div>|; |
|
return $menu_html; |
|
} |
|
|
|
|
# wrap the joined @categories in another <div> (column layout) |
|
return $div->(join('', @categories), {class => "LC_columnSection"}); |
|
} |
|
|
1; |
1; |
|
|