--- loncom/interface/lonmenu.pm 2010/10/07 15:39:27 1.309.2.17 +++ loncom/interface/lonmenu.pm 2010/12/05 17:24:13 1.309.2.22 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.309.2.17 2010/10/07 15:39:27 raeburn Exp $ +# $Id: lonmenu.pm,v 1.309.2.22 2010/12/05 17:24:13 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -151,10 +151,10 @@ sub prep_menuitem { } else { # textual Link $link = &mt($$menuitem[3]); } - if($$menuitem[4] eq 'newmsg'){ #special style for New Messages - return '
  • '.$link.'
  • '; - } - return '
  • '.$link.'
  • '; + return '
  • $link
  • |; } # primary_menu() evaluates @primary_menu and returns XHTML for the menu @@ -165,8 +165,17 @@ sub prep_menuitem { sub primary_menu { my $menu; my $custommenu = &Apache::loncommon::needs_gci_custom(); + my $numdc = &Apache::loncommon::check_for_gci_dc(); + my %allnums = &Apache::loncommon::get_faculty_cnums(); # each element of @primary contains following array: # (link url, icon path, alt text, link text, condition) + my ($public,$faculty); + if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) + || (($env{'user.name'} eq '') && ($env{'user.domain'} eq ''))) { + $public = 1; + } elsif (ref($allnums{$env{'user.domain'}}) eq 'HASH') { + $faculty = 1; + } foreach my $menuitem (@primary_menu) { # evaluate conditions next if ref($menuitem) ne 'ARRAY'; # @@ -175,17 +184,18 @@ 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, - && $env{'user.name'} eq 'public' ##who should not see all - && $env{'user.domain'} eq 'public'; ##links + && $public; ##who should not see all + ##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 'gci' - && (!$custommenu || $env{'request.role'} =~ m{^st\./gcitest/}); + && !$public; # only visible to public + # users + next if $$menuitem[4] eq 'ci' + && (!$custommenu || $env{'request.role'} =~ m{^st\./\w+citest/}); next if $$menuitem[4] eq 'home' - && (($custommenu) || ($env{'user.domain'} eq 'gcitest')); - next if $$menuitem[4] eq 'gcitest' - && (($env{'user.domain'} eq 'gci') || ($env{'request.role'} eq 'cm')); + && (($custommenu) || ($env{'user.domain'} =~ /^\w+citest$/) || + ($faculty && !$numdc)); + next if $$menuitem[4] eq 'citest' + && ($faculty || ($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 @@ -197,11 +207,20 @@ sub primary_menu { if ($$menuitem[3] eq 'Help') { # special treatment for helplink - $menu .= '
  • '.&Apache::loncommon::top_nav_help('Help').'
  • '; + if ($public) { + my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'}; + my $defdom = &Apache::lonnet::default_login_domain(); + my $to = &Apache::loncommon::build_recipient_list(undef, + 'helpdeskmail', + $defdom,$origmail); + if ($to ne '') { + $menu .= &prep_menuitem($menuitem); + } + } else { + $menu .= '
  • '.&Apache::loncommon::top_nav_help('Help').'
  • '; + } } else { - my @items = @{$menuitem}; - $items[0] = 'javascript:'.$menuitem->[0].';'; - $menu .= &prep_menuitem(\@items); + $menu .= &prep_menuitem($menuitem); } } @@ -300,11 +319,20 @@ sub secondary_menu { } sub gci_secondary_menu { - my %courses = ( - 'review' => 'gci_9615072b469884921gcil1', - 'submit' => 'gci_1H96711d710194bfegcil1', - 'tutorial' => 'gci_5422913620b814c90gcil1', - ); + my %courses; + my $inventory; + if ($env{'user.domain'} =~ /^(\w+ci)test$/) { + $inventory = $1; + } else { + $inventory = $env{'user.domain'}; + } + my %allnums = &Apache::loncommon::get_faculty_cnums(); + if ($inventory ne '' && ref($allnums{$inventory} eq 'HASH') { + foreach my $key (%{$allnums{$inventory}}) { + $courses{$inventory.'_'.$key} = $allnums{$inventory}->{$key}; + } + } + my %linktext = ( 'review' => 'Review Questions', 'submit' => 'Submit Questions', @@ -315,13 +343,17 @@ sub gci_secondary_menu { 'managetest' => '/adm/menu', ); my $current = 'managetest'; - if ($env{'form.destinationurl'} eq '/adm/gci_info') { + if ($env{'form.destinationurl'} eq '/adm/ci_info') { undef($current); } foreach my $key (keys(%courses)) { $links{$key} = "javascript:switchpage('$key');"; if ($env{'request.course.id'} eq $courses{$key}) { - $links{$key} = '/adm/navmaps'; + 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'; } @@ -330,10 +362,10 @@ sub gci_secondary_menu { my $tabs; foreach my $item (@menutabs) { if ($item eq $current) { - $tabs .= '
  • '. + $tabs .= '
  • '. $linktext{$item}.'
  • '; } else { - $tabs .= '
  • '. + $tabs .= '
  • '. $linktext{$item}.'
  • '; } } @@ -622,9 +654,13 @@ sub innerregister { my @crumbs; unless (($forcereg) && ($env{'request.noversionuri'} eq '/adm/navmaps') && ($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'})) { + my $link = "javascript:gopost('/adm/navmaps','')"; + if ($env{'environment.remotenavmap'} eq 'on') { + $link = "javascript:gonav('/adm/navmaps','')" + } @crumbs = ({text => Apache::loncommon::course_type() . ' Contents', - href => "Javascript:gopost('/adm/navmaps','')"}); + href => $link}); } if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) { push(@crumbs, {text => '...', @@ -1433,9 +1469,9 @@ ENDSCRIPT } $switcher = $switcher_js.$switcher; } - if ($env{'user.domain'} eq 'gci') { + if ($env{'user.domain'} !~ /^\w+citest$/) { $canreq = - &Apache::lonnet::check_can_request('gcitest',\%can_request,\%request_domains); + &Apache::lonnet::check_can_request($env{'user.domain'}.'test',\%can_request,\%request_domains); $createtext = &mt('Create Concept Test'); if ($numcourses) { $createtext = &mt('Create New Test'); @@ -1443,13 +1479,19 @@ ENDSCRIPT } if ($env{'request.course.id'}) { if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) { + my $navlink; + if ($env{'environment.remotenavmap'} eq 'on') { + $navlink = "javascript:gonav('/adm/navmaps')"; + } else { + $navlink = '/adm/navmaps'; + } $output .= - '
    '. - '

    '.&mt('Test Management').'

    '. + '

    '. + '

    '.&mt('Management').'

    '. '
    '. '
    '. - '
    '.&mt('Concept Test Contents').'
    '. - '
    '.&mt('Display the table of contents for your Concept Test.').'
    '. + '
    '.&mt('Concept Test Contents').'
    '. + '
    '.&mt('Display the table of contents for your Concept Test.').'
    '. '
    '.&mt('Assemble Concept Test').'
    '. '
    '.&mt('If no students have attempted the Concept Test you will be able to modify it. You can also change the start and end date of the test itself.').'
    '. '
    '.&mt('Enrollment and Student Activity').'
    '. @@ -1470,18 +1512,24 @@ ENDSCRIPT } else { my $navtext = &mt('Table of Contents'); my $navdesc = &mt('Display Table of Contents for Geoscience Concept Inventory'); - if ($env{'request.role.domain'} eq 'gcitest') { + if ($env{'request.role.domain'} =~ /^\w+citest$/) { $navtext = &mt('Display Test Contents'); $navdesc = &mt('Display the table of contents for this Concept Test'); } + my $navlink; + if ($env{'environment.remotenavmap'} eq 'on') { + $navlink = "javascript:gonav('/adm/navmaps');" + } else { + $navlink = '/adm/navmaps'; + } $output .= - '
    '. + '
    '. '

    '.&mt('Utilities').'

    '. ''; + ''.$navdesc.'
    '; if ($canreq) { $output .= '
    '. '
    '. @@ -1492,7 +1540,7 @@ ENDSCRIPT } } elsif ($switcher || $canreq) { $output .= '

    '. - '
    '. + '
    '. '

    '.&mt('Utilities').'

    '. '
    '. '
    '; @@ -1514,7 +1562,7 @@ ENDSCRIPT my $queued = &Apache::loncoursequeueadmin::queued_selfenrollment('notitle'); if ($queued) { $output .= - '
    '. + '
    '. '

    '.&mt('Pending Enrollment Requests').'

    '. $queued. '
    '; @@ -1854,7 +1902,7 @@ sub utilityfunctions { my $managetesturl = '/adm/menu'; my $createtesturl = '/adm/requestcourse'; if (($env{'request.course.id'}) && - ($env{'course.'.$env{'request.course.id'}.'.domain'} eq 'gci')) { + ($env{'course.'.$env{'request.course.id'}.'.domain'} !~ /^\w+citest$/)) { my @items = keys(%concepttests); if (@items== 1) { my $newrole = $items[0]; @@ -1867,14 +1915,24 @@ sub utilityfunctions { if ($env{'request.course.id'}) { $createtesturl = '/adm/roles?selectrole=1&cm=1&orgurl=%2fadm%2frequestcourse'; } + my %allnums = &Apache::loncommon::get_faculty_cnums(); + my $udom = $env{'user.domain'}; + my %crs_by_caller; + if (ref($allnums{$udom}) eq 'HASH') { + foreach my $key (%{$allnums{$udom}}) { + $crs_by_caller{$allnums{$udom}->{$key}} = 'st./'.$udom.'/'.$key.'=1'; + } + } + } + $gcimenujs = <<"ENDCUSTOM"; function switchpage(caller) { if (caller == 'review') { - document.location.href = '/adm/roles?selectrole=1&st./gci/9615072b469884921gcil1=1'; + document.location.href = '/adm/roles?selectrole=1&'.$crs_by_caller{'review'}; } if (caller == 'submit') { - document.location.href = '/adm/roles?selectrole=1&st./gci/1H96711d710194bfegcil1=1'; + document.location.href = '/adm/roles?selectrole=1&'.$crs_by_caller{'submit'}; } if (caller == 'createtest') { document.location.href = '$createtesturl'; @@ -1883,7 +1941,7 @@ function switchpage(caller) { document.location.href = '$managetesturl'; } if (caller == 'tutorial') { - document.location.href = '/adm/roles?selectrole=1&st./gci/5422913620b814c90gcil1=1'; + document.location.href = '/adm/roles?selectrole=1&'.$crs_by_caller{'tutorial'}; } return; } @@ -1948,12 +2006,6 @@ function go(url) { } } -function gotop(url) { - if (url!='' && url!= null) { - top.location.href = url; - } -} - function gopost(url,postdata) { if (url!='') { this.document.server.action=url;