--- loncom/interface/lonmenu.pm 2010/11/30 05:51:55 1.309.2.19 +++ loncom/interface/lonmenu.pm 2010/03/03 21:33:15 1.315 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.309.2.19 2010/11/30 05:51:55 raeburn Exp $ +# $Id: lonmenu.pm,v 1.315 2010/03/03 21:33:15 droeschl Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,17 +42,72 @@ Coordinates the response to clicking an This is part of the LearningOnline Network with CAPA project described at http://www.lon-capa.org. +=head1 GLOBAL VARIABLES + +=over + +=item @desklines + +Each element of this array contains a line of mydesk.tab that doesn't start with +cat, prim or scnd. +It gets filled in the BEGIN block of this module. + +=item %category_names + +The keys of this hash are the abbreviations used in mydesk.tab in those lines that +start with cat, the values are strings representing titles. +It gets filled in the BEGIN block of this module. + +=item %category_members + +TODO + +=item %category_positions + +The keys of this hash are the abbreviations used in mydesk.tab in those lines that +start with cat, its values are position vectors (column, row). +It gets filled in the BEGIN block of this module. + +=item $readdesk + +Indicates that mydesk.tab has been read. +It is set to 'done' in the BEGIN block of this module. + +=item @primary_menu + +The elements of this array reference arrays that are made up of the components +of those lines of mydesk.tab that start with prim. +It is used by primary_menu() to generate the corresponding menu. +It gets filled in the BEGIN block of this module. + +=item @secondary_menu + +The elements of this array reference arrays that are made up of the components +of those lines of mydesk.tab that start with scnd. +It is used by secondary_menu() to generate the corresponding menu. +It gets filled in the BEGIN block of this module. + +=back + =head1 SUBROUTINES =over -Little texts +=item prep_menuitems(\@menuitem) + +This routine wraps a menuitem in proper HTML. It is used by primary_menu() and +secondary_menu(). + +=item primary_menu() -=item initlittle() +This routine 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 -=item menubuttons() +=item secondary_menu() -This gets called at the top of the body section +Same as primary_menu() but operates on @secondary_menu. =item show_return_link() @@ -131,7 +186,6 @@ use Apache::lonhtmlcommon(); use Apache::loncommon(); use Apache::lonenc(); use Apache::lonlocal; -use Apache::loncoursequeueadmin; use LONCAPA qw(:DEFAULT :match); use HTML::Entities(); @@ -164,15 +218,8 @@ sub prep_menuitem { # entries from mydesk.tab sub primary_menu { my $menu; - my $custommenu = &Apache::loncommon::needs_gci_custom(); - my $numdc = &Apache::loncommon::check_for_gci_dc(); # each element of @primary contains following array: # (link url, icon path, alt text, link text, condition) - my $public; - if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) - || (($env{'user.name'} eq '') && ($env{'user.domain'} eq ''))) { - $public = 1; - } foreach my $menuitem (@primary_menu) { # evaluate conditions next if ref($menuitem) ne 'ARRAY'; # @@ -181,22 +228,11 @@ sub primary_menu { next if $$menuitem[4] eq 'newmsg' # arrived or not && !&Apache::lonmsg::mynewmail(); # next if $$menuitem[4] !~ /public/ ##we've a public user, - && $public; ##who should not see all - ##links + && $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 - && !$public; # only visible to public - # users - next if $$menuitem[4] eq 'gci' - && (!$custommenu || $env{'request.role'} =~ m{^st\./gcitest/}); - next if $$menuitem[4] eq 'home' - && (($custommenu) || ($env{'user.domain'} eq 'gcitest') || - (($env{'user.domain'} eq 'gci') && !$numdc)); - next if $$menuitem[4] eq 'gcitest' - && (($env{'user.domain'} eq 'gci') || ($env{'request.role'} eq 'cm')); - next if $$menuitem[4] eq 'roles' # hide links which are - && $custommenu; # not visible when GCI - next if $$menuitem[4] eq 'courses' # tabbed interface in use - && $custommenu; # + && $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 @@ -229,16 +265,10 @@ sub secondary_menu { $env{'user.domain'}, $env{'user.name'}, $env{'course.' . $env{'request.course.id'} . '.domain'}, $env{'course.' . $env{'request.course.id'} . '.num'}); - my $custommenu = &Apache::loncommon::needs_gci_custom(); - my $numdc = &Apache::loncommon::check_for_gci_dc(); - my $role = $env{'request.role'}; foreach my $menuitem (@secondary_menu) { # evaluate conditions next if ref($menuitem) ne 'ARRAY'; - next if $$menuitem[4] eq 'showmenu' - && ($custommenu || (!$numdc && $role eq 'cm')); - next if $$menuitem[4] ne 'showmenu' - && $$menuitem[4] ne 'author' + next if $$menuitem[4] ne 'always' && !$env{'request.course.id'}; next if $$menuitem[4] eq 'showreturn' && !$showlink @@ -260,9 +290,8 @@ sub secondary_menu { next if $$menuitem[4] =~ /showgroups$/ && !$canviewgrps && !%groups; - next if $$menuitem[4] eq 'showroles' - && ($custommenu || !$numdc || ($numdc && $env{'request.noversionuri'} eq '/adm/roles')); - if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'} && !$custommenu) { + + 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'}, @@ -306,249 +335,7 @@ sub secondary_menu { return "
"; } -sub gci_secondary_menu { - my %courses = ( - 'review' => 'gci_9615072b469884921gcil1', - 'submit' => 'gci_1H96711d710194bfegcil1', - 'tutorial' => 'gci_5422913620b814c90gcil1', - ); - my %linktext = ( - 'review' => 'Review Questions', - 'submit' => 'Submit Questions', - 'managetest' => 'Manage Tests', - 'tutorial' => 'Tutorials', - ); - my %links = ( - 'managetest' => '/adm/menu', - ); - my $current = 'managetest'; - if ($env{'form.destinationurl'} eq '/adm/gci_info') { - undef($current); - } - foreach my $key (keys(%courses)) { - $links{$key} = "javascript:switchpage('$key');"; - if ($env{'request.course.id'} eq $courses{$key}) { - if ($env{'environment.remotenavmap'} eq 'on') { - $links{$key} = "javascript:gonav('/adm/navmaps')"; - } else { - $links{$key} = '/adm/navmaps'; - } - $current = $key; - $links{'managetest'} = '/adm/roles?selectrole=1&cm=1&orgurl=%2fadm%2fmenu'; - } - } - my @menutabs = ('review','submit','managetest','tutorial'); - my $tabs; - foreach my $item (@menutabs) { - if ($item eq $current) { - $tabs .= '';
+ for (my $row=1; $row<=8; $row++) {
+ foreach my $cat (keys(%category_members)) {
+ if ($category_positions{$cat} ne "$col,$row") { next; }
+ #$output.='
'; - } - } elsif ($context eq 'gcinorole') { - my $queued = &Apache::loncoursequeueadmin::queued_selfenrollment('notitle'); - if ($queued) { - $output .= - ' '.
- ' ';
- }
- } else {
- # calling rawconfig with "1" will evaluate mydesk.tab,
- # even if there is no active remote control
- &rawconfig(1);
- $output=''.&mt('Pending Enrollment Requests').''. - $queued. - '
|