version 1.280, 2009/08/20 20:49:59
|
version 1.283, 2009/10/04 17:47:21
|
Line 137 use Apache::loncommon();
|
Line 137 use Apache::loncommon();
|
use Apache::lonenc(); |
use Apache::lonenc(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
|
use HTML::Entities(); |
|
|
use vars qw(@desklines %category_names %category_members %category_positions $readdesk); |
use vars qw(@desklines %category_names %category_members %category_positions |
|
$readdesk @primary_menu @secondary_menu); |
|
|
|
|
my @inlineremote; |
my @inlineremote; |
|
|
|
sub prep_menuitem { |
|
my $menuitem = shift; |
|
return '' unless ref $menuitem eq 'ARRAY'; |
|
my $link; |
|
if ($$menuitem[1]) { # graphical Link |
|
$link = "<img class=\"LC_noBorder\"" |
|
. " src=\"" . Apache::loncommon::lonhttpdurl($$menuitem[1]) . "\"" |
|
. " alt=\"" . mt($$menuitem[2]) . "\" />"; |
|
} else { # textual Link |
|
$link = mt($$menuitem[3]); |
|
} |
|
return "<li><a href=\"javascript:$$menuitem[0]\">$link</a></li>"; |
|
} |
|
|
|
# primary_menu() evaluates @primary_menu and returns XHTML for the menu |
|
# that contains following links: |
|
# About, Message, Roles, Help, Logout |
|
# @primary_menu is filled within the BEGIN block of this module with |
|
# entries from mydesk.tab |
|
sub primary_menu { |
|
my $menu; |
|
# each element of @primary contains following array: |
|
# (link url, icon path, alt text, link text, condition) |
|
foreach my $menuitem (@primary_menu) { |
|
# evaluate conditions |
|
next if $$menuitem[4] eq 'nonewmsg' # show links depending on |
|
&& Apache::lonmsg::mynewmail(); # whether a new msg |
|
next if $$menuitem[4] eq 'newmsg' # arrived or not |
|
&& !Apache::lonmsg::mynewmail(); # |
|
next if $$menuitem[4] !~ /public/ ##we've a public user, |
|
&& $env{'user.name'} eq 'public' ##who should not see all |
|
&& $env{'user.domain'} eq 'public'; ##links |
|
next if $$menuitem[4] eq 'onlypublic'# hide links which are |
|
&& $env{'user.name'} ne 'public' # only visible to public |
|
&& $env{'user.domain'} ne 'public'; # users |
|
next if $$menuitem[4] eq 'roles' ##show links depending on |
|
&& Apache::loncommon::show_course(); ##term 'Courses' or |
|
next if $$menuitem[4] eq 'courses' ##'Roles' wanted |
|
&& !Apache::loncommon::show_course(); ## |
|
|
|
|
|
if ($$menuitem[3] eq 'Help') { # special treatment for helplink |
|
$menu .= Apache::loncommon::top_nav_help('Help'); |
|
} else { |
|
$menu .= prep_menuitem(\@$menuitem); |
|
} |
|
} |
|
|
|
return "<ol class=\"LC_smallMenu LC_right\">$menu</ol>"; |
|
} |
|
|
|
|
|
sub secondary_menu { |
|
my $menu; |
|
|
|
foreach my $menuitem (@secondary_menu) { |
|
# evaluate conditions |
|
next if $$menuitem[4] ne 'always' |
|
&& !$env{'request.course.id'}; |
|
next if $$menuitem[4] eq 'showreturn' |
|
&& !show_return_link() |
|
&& !($env{'request.state'} eq 'construct'); |
|
next if $$menuitem[4] =~ /^mdc/ |
|
&& !Apache::lonnet::allowed('mdc', $env{'request.course.id'}); |
|
next if $$menuitem[4] =~ /nogrp$/ |
|
&& Apache::loncommon::course_type() eq 'Group'; |
|
next if $$menuitem[4] =~ /group$/ |
|
&& Apache::loncommon::course_type() ne 'Group'; |
|
next if $$menuitem[4] eq 'remotenav' |
|
&& $env{'environment.remotenavmap'} ne 'on'; |
|
next if $$menuitem[4] eq 'noremotenav' |
|
&& $env{'environment.remotenavmap'} eq 'on'; |
|
next if $$menuitem[4] =~ /showgroups$/ |
|
&& !Apache::lonnet::allowed('vcg', $env{'request.course.id'} |
|
. ($env{'request.course.sec'} ? "/$env{'request.course.sec'}" |
|
: '')) |
|
&& !Apache::lonnet::get_active_groups( |
|
$env{'user.domain'}, $env{'user.name'}, |
|
$env{'course.' . $env{'request.course.id'} . '.domain'}, |
|
$env{'course.' . $env{'request.course.id'} . '.num'}); |
|
|
|
|
|
if($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) { |
|
# special treatment for role selector |
|
my $roles_selector = roles_selector( |
|
$env{'course.' . $env{'request.course.id'} . '.domain'}, |
|
$env{'course.' . $env{'request.course.id'} . '.num'} ); |
|
|
|
$menu .= $roles_selector ? "<li>$roles_selector</li>" |
|
: ''; |
|
} else { |
|
$menu .= prep_menuitem(\@$menuitem); |
|
} |
|
} |
|
if ($menu =~ /\[url\].*\[symb\]/) { |
|
my $escurl = escape( Apache::lonenc::check_encrypt( |
|
$env{'request.noversionuri'})); |
|
|
|
my $escsymb = escape( Apache::lonenc::check_encrypt( |
|
$env{'request.symb'})); |
|
|
|
if ( $env{'request.state'} eq 'construct' |
|
and ( $env{'request.noversionuri'} eq '' |
|
|| !defined($env{'request.noversionuri'}))) |
|
{ |
|
($escurl = $env{'request.filename'}) =~ |
|
s{^/home/([^/]+)/public_html/(.*)$}{/priv/$1/$2}; |
|
|
|
$escurl = escape($escurl); |
|
} |
|
$menu =~ s/\[url\]/$escurl/g; |
|
$menu =~ s/\[symb\]/$escsymb/g; |
|
} |
|
|
|
return "<ul id=\"LC_TabMainMenuContent\">$menu</ul>"; |
|
} |
|
|
|
|
# |
# |
# This routine returns a translated hash for the menu items in the top inline menu row |
# This routine returns a translated hash for the menu items in the top inline menu row |
# Probably should be in mydesk.tab |
# Probably should be in mydesk.tab |
|
|
|
#SD this sub is deprecated - don't use it |
sub initlittle { |
sub initlittle { |
return &Apache::lonlocal::texthash('ret' => 'Return to Last Location', |
return &Apache::lonlocal::texthash('ret' => 'Return to Last Location', |
'nav' => 'Navigate Contents', |
'nav' => 'Course Contents', |
'main' => 'Main Menu', |
'main' => 'Main Menu', |
'roles' => (&Apache::loncommon::show_course()? |
'roles' => (&Apache::loncommon::show_course()? |
'Courses':'Roles'), |
'Courses':'Roles'), |
Line 163 sub initlittle {
|
Line 284 sub initlittle {
|
); |
); |
} |
} |
|
|
|
#SD this sub is deprecated - don't use it |
|
#SD functionality is covered by new loncommon::bodytag and primary_menu(), secondary_menu() |
sub menubuttons { |
sub menubuttons { |
my $forcereg=shift; |
my $forcereg=shift; |
my $titletable=shift; |
my $titletable=shift; |
Line 1688 sub roles_selector {
|
Line 1811 sub roles_selector {
|
} |
} |
$role_selector .= '</select>'."\n". |
$role_selector .= '</select>'."\n". |
'<input type="hidden" name="destinationurl" value="'. |
'<input type="hidden" name="destinationurl" value="'. |
$ENV{'REQUEST_URI'}.'" />'."\n". |
&HTML::Entities::encode($ENV{'REQUEST_URI'}).'" />'."\n". |
'<input type="hidden" name="gotorole" value="1" />'."\n". |
'<input type="hidden" name="gotorole" value="1" />'."\n". |
'<input type="hidden" name="selectrole" value="" />'."\n". |
'<input type="hidden" name="selectrole" value="" />'."\n". |
'<input type="hidden" name="switch" value="1" />'."\n". |
'<input type="hidden" name="switch" value="1" />'."\n". |
Line 1866 END
|
Line 1989 END
|
|
|
BEGIN { |
BEGIN { |
if (! defined($readdesk)) { |
if (! defined($readdesk)) { |
{ |
{ |
my $tabfile = $Apache::lonnet::perlvar{'lonTabDir'}.'/mydesk.tab'; |
my $tabfile = $Apache::lonnet::perlvar{'lonTabDir'}.'/mydesk.tab'; |
if ( CORE::open( my $config,"<$tabfile") ) { |
if ( CORE::open( my $config,"<$tabfile") ) { |
while (my $configline=<$config>) { |
while (my $configline=<$config>) { |
$configline=(split(/\#/,$configline))[0]; |
$configline=(split(/\#/,$configline))[0]; |
$configline=~s/^\s+//; |
$configline=~s/^\s+//; |
chomp($configline); |
chomp($configline); |
if ($configline=~/^cat\:/) { |
if ($configline=~/^cat\:/) { |
my @entries=split(/\:/,$configline); |
my @entries=split(/\:/,$configline); |
$category_positions{$entries[2]}=$entries[1]; |
$category_positions{$entries[2]}=$entries[1]; |
$category_names{$entries[2]}=$entries[3]; |
$category_names{$entries[2]}=$entries[3]; |
} elsif ($configline) { |
} elsif ($configline=~/^prim\:/) { |
push(@desklines,$configline); |
my @entries = (split(/\:/, $configline))[1..5]; |
} |
push @primary_menu, \@entries; |
} |
} elsif ($configline=~/^scnd\:/) { |
CORE::close($config); |
my @entries = (split(/\:/, $configline))[1..5]; |
} |
push @secondary_menu, \@entries; |
} |
} elsif ($configline) { |
$readdesk='done'; |
push(@desklines,$configline); |
|
} |
|
} |
|
CORE::close($config); |
|
} |
|
} |
|
$readdesk='done'; |
} |
} |
} |
} |
|
|
1; |
1; |
__END__ |
__END__ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|