version 1.374, 2012/05/22 16:44:06
|
version 1.381, 2012/05/29 19:40:44
|
Line 115 entries from mydesk.tab
|
Line 115 entries from mydesk.tab
|
|
|
Same as primary_menu() but operates on @secondary_menu. |
Same as primary_menu() but operates on @secondary_menu. |
|
|
|
=item create_submenu() |
|
|
|
Creates XHTML for unordered list of sub-menu items which belong to a |
|
particular top-level menu item. Uses hover pseudo class in css to display |
|
dropdown list when mouse hovers over top-level item. Support for IE6 |
|
(no hover psuedo class) via LC_hoverable class for <li> tag for top- |
|
level item, which employs jQuery to handle behavior on mouseover. |
|
|
|
Inputs: 4 - (a) link and (b) target for anchor href in top level item, |
|
(c) title for text wrapped by anchor tag in top level item. |
|
(d) reference to array of arrays of sub-menu items. |
|
|
=item innerregister() |
=item innerregister() |
|
|
This gets called in order to register a URL in the body of the document |
This gets called in order to register a URL in the body of the document |
Line 225 sub primary_menu {
|
Line 237 sub primary_menu {
|
|
|
my $title = $menuitem->[3]; |
my $title = $menuitem->[3]; |
if (defined($primary_submenu{$title})) { |
if (defined($primary_submenu{$title})) { |
my ($link,$target,$numsub); |
my ($link,$target); |
if ($menuitem->[0] ne '') { |
if ($menuitem->[0] ne '') { |
$link = $menuitem->[0]; |
$link = $menuitem->[0]; |
$target = '_top'; |
$target = '_top'; |
} else { |
} else { |
$link = '#'; |
$link = '#'; |
} |
} |
|
my @primsub; |
if (ref($primary_submenu{$title}) eq 'ARRAY') { |
if (ref($primary_submenu{$title}) eq 'ARRAY') { |
$numsub = @{$primary_submenu{$title}}; |
foreach my $item (@{$primary_submenu{$title}}) { |
if ($numsub) { |
next if (($item->[2] eq 'wishlist') && |
$title = |
((!&Apache::lonnet::allowed('bre',"/res/$env{'user.domain'}/")) && |
'<span class="LC_nobreak">'.&mt($title). |
(!&Apache::lonnet::allowed('bro',"/res/$env{'user.domain'}/")))); |
'<span class="LC_fontsize_small">'. |
next if (($item->[2] eq 'reqcrs') && (!&check_for_rcrs())); |
'▼</span></span>'; |
next if ((($item->[2] eq 'portfolio') || |
} |
($item->[2] eq 'blog')) && |
} |
(!&Apache::lonnet::usertools_access('','',$item->[2], |
$menu .= '<li class="LC_hoverable">'. |
undef,'tools'))); |
'<a href="'.$link.'" target="'.$target.'">'.$title.'</a>'; |
push(@primsub,$item); |
if ($numsub) { |
} |
$menu .= '<ul>'; |
if (@primsub > 0) { |
foreach my $item (@{$primary_submenu{$menuitem->[3]}}) { |
$menu .= &create_submenu($link,$target,$title,\@primsub); |
if (ref($item) eq 'ARRAY') { |
} elsif ($link) { |
if ($item->[2] eq 'wishlist') { |
$menu .= '<li><a href="'.$link.'" target="'.$target.'">'.&mt($title).'</a></li>'; |
next unless ((&Apache::lonnet::allowed('bre',"/res/$env{'user.domain'}/")) || |
|
(&Apache::lonnet::allowed('bro',"/res/$env{'user.domain'}/"))); |
|
} elsif ($item->[2] eq 'reqcrs') { |
|
next unless(&check_for_rcrs()); |
|
} elsif (($item->[2] eq 'portfolio') || |
|
($item->[2] eq 'blog')) { |
|
if (!&Apache::lonnet::usertools_access( |
|
$env{'user.name'}, |
|
$env{'user.domain'}, |
|
$item->[2],undef,'tools')) { |
|
next; |
|
} |
|
} |
|
$menu .= '<li style="margin:0;padding:0">'. |
|
'<a href="'.$item->[0]. |
|
'" style="padding:0 0 0 10px">'. |
|
&mt($item->[1]).'</a></li>'; |
|
} |
|
} |
} |
$menu .= '</ul>'; |
|
} |
} |
$menu .= '</li>'; |
|
} elsif ($$menuitem[3] eq 'Help') { # special treatment for helplink |
} elsif ($$menuitem[3] eq 'Help') { # special treatment for helplink |
if ($public) { |
if ($public) { |
my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'}; |
my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'}; |
Line 326 sub secondary_menu {
|
Line 319 sub secondary_menu {
|
? "/$env{'request.course.sec'}" |
? "/$env{'request.course.sec'}" |
: ''); |
: ''); |
my $canedit = &Apache::lonnet::allowed('mdc', $env{'request.course.id'}); |
my $canedit = &Apache::lonnet::allowed('mdc', $env{'request.course.id'}); |
|
my $canviewroster = $env{'course.'.$env{'request.course.id'}.'.student_classlist_view'}; |
my $canviewgrps = &Apache::lonnet::allowed('vcg', $crs_sec); |
my $canviewgrps = &Apache::lonnet::allowed('vcg', $crs_sec); |
my $canmodifyuser = &Apache::lonnet::allowed('cst', $crs_sec); |
my $canmodifyuser = &Apache::lonnet::allowed('cst', $crs_sec); |
my $canviewwnew = &Apache::lonnet::allowed('whn', $crs_sec); |
my $canviewwnew = &Apache::lonnet::allowed('whn', $crs_sec); |
Line 354 sub secondary_menu {
|
Line 348 sub secondary_menu {
|
next if $$menuitem[4] eq 'cst' |
next if $$menuitem[4] eq 'cst' |
&& !$canmodifyuser; |
&& !$canmodifyuser; |
next if $$menuitem[4] eq 'ncst' |
next if $$menuitem[4] eq 'ncst' |
&& $canmodifyuser; |
&& ($canmodifyuser || !$canviewroster); |
next if $$menuitem[4] eq 'mgr' |
next if $$menuitem[4] eq 'mgr' |
&& !$canmgr; |
&& !$canmgr; |
next if $$menuitem[4] eq 'nmgr' |
next if $$menuitem[4] eq 'nmgr' |
Line 405 sub secondary_menu {
|
Line 399 sub secondary_menu {
|
return "<ul id=\"LC_secondary_menu\">$menu</ul>"; |
return "<ul id=\"LC_secondary_menu\">$menu</ul>"; |
} |
} |
|
|
|
sub create_submenu { |
|
my ($link,$target,$title,$submenu) = @_; |
|
return unless (ref($submenu) eq 'ARRAY'); |
|
my $disptarget; |
|
if ($target ne '') { |
|
$disptarget = ' target="'.$target.'"'; |
|
} |
|
my $menu = '<li class="LC_hoverable">'. |
|
'<a href="'.$link.'"'.$disptarget.'>'. |
|
'<span class="LC_nobreak">'.&mt($title). |
|
'<span class="LC_fontsize_small" style="font-weight:normal;">'. |
|
' ▼</span></span></a>'. |
|
'<ul>'; |
|
my $count = 0; |
|
my $numsub = scalar(@{$submenu}); |
|
foreach my $item (@{$submenu}) { |
|
$count ++; |
|
if (ref($item) eq 'ARRAY') { |
|
my $borderbot; |
|
if ($count == $numsub) { |
|
$borderbot = 'border-bottom:1px solid black;'; |
|
} |
|
$menu .= '<li style="margin:0;padding:0;'. |
|
$borderbot.'"><a href="'.$item->[0].'">'. |
|
&mt($item->[1]).'</a></li>'; |
|
} |
|
} |
|
$menu .= '</ul></li>'; |
|
return $menu; |
|
} |
|
|
sub innerregister { |
sub innerregister { |
my ($forcereg,$bread_crumbs) = @_; |
my ($forcereg,$bread_crumbs) = @_; |
my $const_space = ($env{'request.state'} eq 'construct'); |
my $const_space = ($env{'request.state'} eq 'construct'); |
Line 757 ENDMENUITEMS
|
Line 782 ENDMENUITEMS
|
&Apache::lonhtmlcommon::add_breadcrumb_tool( |
&Apache::lonhtmlcommon::add_breadcrumb_tool( |
'navigation', @inlineremote[21,23]); |
'navigation', @inlineremote[21,23]); |
|
|
if(hidden_button_check() ne 'yes') { |
my $countdown = &countdown_timer(); |
|
if (&hidden_button_check() eq 'yes') { |
|
if ($countdown) { |
|
&Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$countdown); |
|
} |
|
} else { |
|
my @tools = @inlineremote[93,91,81,82,83]; |
|
if ($countdown) { |
|
unshift(@tools,$countdown); |
|
} |
&Apache::lonhtmlcommon::add_breadcrumb_tool( |
&Apache::lonhtmlcommon::add_breadcrumb_tool( |
'tools', @inlineremote[93,91,81,82,83]); |
'tools',@tools); |
|
|
#publish button in construction space |
#publish button in construction space |
if ($env{'request.state'} eq 'construct'){ |
if ($env{'request.state'} eq 'construct'){ |
Line 870 sub switch {
|
Line 904 sub switch {
|
} |
} |
} else { |
} else { |
# Inline Menu |
# Inline Menu |
$inlineremote[$idx]= |
my @tools = (93,91,81,82,83); |
|
unless ($env{'request.state'} eq 'construct') { |
|
push(@tools,63); |
|
} |
|
if (($env{'environment.icons'} eq 'iconsonly') && |
|
(grep(/^$idx$/,@tools))) { |
|
$inlineremote[$idx] = |
|
'<a title="'.$desc.'" class="LC_menubuttons_link" href="javascript:'.$act.';">'.$pic.'</a>'; |
|
} else { |
|
$inlineremote[$idx] = |
'<a title="'.$desc.'" class="LC_menubuttons_link" href="javascript:'.$act.';">'.$pic. |
'<a title="'.$desc.'" class="LC_menubuttons_link" href="javascript:'.$act.';">'.$pic. |
'<span class="LC_menubuttons_inline_text">'.$top.' </span></a>'; |
'<span class="LC_menubuttons_inline_text">'.$top.' </span></a>'; |
|
} |
} |
} |
return ''; |
return ''; |
} |
} |
Line 1158 END
|
Line 1202 END
|
|
|
} |
} |
|
|
|
sub countdown_toggle_js { |
|
return <<"END"; |
|
|
|
function toggleCountdown() { |
|
var countdownid = document.getElementById('duedatecountdown'); |
|
var currstyle = countdownid.style.display; |
|
if (currstyle == 'inline') { |
|
countdownid.style.display = 'none'; |
|
document.getElementById('ddcountcollapse').innerHTML=''; |
|
document.getElementById('ddcountexpand').innerHTML='◄ '; |
|
} else { |
|
countdownid.style.display = 'inline'; |
|
document.getElementById('ddcountcollapse').innerHTML='► '; |
|
document.getElementById('ddcountexpand').innerHTML=''; |
|
} |
|
return; |
|
} |
|
|
|
END |
|
} |
|
|
sub utilityfunctions { |
sub utilityfunctions { |
my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0])); |
my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0])); |
if ($currenturl =~ m{^/adm/wrapper/ext/} |
if ($currenturl =~ m{^/adm/wrapper/ext/} |
Line 1192 sub utilityfunctions {
|
Line 1257 sub utilityfunctions {
|
my $esc_url=&escape($currenturl); |
my $esc_url=&escape($currenturl); |
my $esc_symb=&escape($currentsymb); |
my $esc_symb=&escape($currentsymb); |
|
|
|
my $countdown = &countdown_toggle_js(); |
|
|
return (<<ENDUTILITY) |
return (<<ENDUTILITY) |
|
|
var currentURL=unescape("$esc_url"); |
var currentURL=unescape("$esc_url"); |
Line 1342 function open_StoredLinks_Import(rat) {
|
Line 1409 function open_StoredLinks_Import(rat) {
|
}); |
}); |
}(jQuery)); |
}(jQuery)); |
|
|
|
$countdown |
|
|
ENDUTILITY |
ENDUTILITY |
} |
} |
|
|
Line 1740 sub required_privs {
|
Line 1809 sub required_privs {
|
return $privs; |
return $privs; |
} |
} |
|
|
|
sub countdown_timer { |
|
if (($env{'request.course.id'}) && ($env{'request.symb'} ne '') && |
|
($env{'request.filename'}=~/$LONCAPA::assess_re/) && |
|
($Apache::inputtags::status[-1] eq 'CAN_ANSWER')) { |
|
my $duedate = &Apache::lonnet::EXT("resource.0.duedate"); |
|
my @interval=&Apache::lonnet::EXT("resource.0.interval"); |
|
my $hastimeleft; |
|
if (@interval > 1) { |
|
my $first_access=&Apache::lonnet::get_first_access($interval[1]); |
|
if ($first_access > 0) { |
|
if ($first_access+$interval[0] > time) { |
|
$hastimeleft = 1; |
|
} |
|
} |
|
} |
|
if (($duedate && $duedate > time) || |
|
(!$duedate && $hastimeleft)) { |
|
my ($collapse,$expand,$alttxt,$title,$currdisp); |
|
if (@interval > 1 && $hastimeleft) { |
|
$currdisp = 'inline'; |
|
$collapse = '► '; |
|
} else { |
|
$currdisp = 'none'; |
|
$expand = '◄ '; |
|
} |
|
unless ($env{'environment.icons'} eq 'iconsonly') { |
|
$alttxt = &mt('Timer'); |
|
$title = $alttxt.' '; |
|
} |
|
my $desc = &mt('Countdown to due date/time'); |
|
return <<END; |
|
|
|
<a href="javascript:toggleCountdown();" class="LC_menubuttons_link"> |
|
<span id="ddcountcollapse" class="LC_menubuttons_inline_text"> |
|
$collapse |
|
</span></a> |
|
<span id="duedatecountdown" class="LC_menubuttons_inline_text" style="display: $currdisp;"></span> |
|
<a href="javascript:toggleCountdown();" class="LC_menubuttons_link"> |
|
<span id="ddcountexpand" class="LC_menubuttons_inline_text" >$expand</span> |
|
<img src="/res/adm/pages/timer.png" title="$desc" class="LC_icon" alt="$alttxt" /><span class="LC_menubuttons_inline_text">$title</span></a> |
|
END |
|
} |
|
} |
|
return; |
|
} |
|
|
# ================================================================ Main Program |
# ================================================================ Main Program |
|
|
BEGIN { |
BEGIN { |