Diff for /loncom/interface/lonmenu.pm between versions 1.308 and 1.309.2.21

version 1.308, 2009/11/30 21:29:47 version 1.309.2.21, 2010/12/02 16:44:09
Line 131  use Apache::lonhtmlcommon(); Line 131  use Apache::lonhtmlcommon();
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonenc();  use Apache::lonenc();
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::loncoursequeueadmin;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
 use HTML::Entities();  use HTML::Entities();
   
Line 150  sub prep_menuitem { Line 151  sub prep_menuitem {
     } else {             # textual Link      } else {             # textual Link
         $link = &mt($$menuitem[3]);          $link = &mt($$menuitem[3]);
     }      }
     return '<li><a href="'.$$menuitem[0].'">'.$link.'</a></li>';      return '<li><a' 
              # highlighting for new messages
              . ( $$menuitem[4] eq 'newmsg' ? ' class="LC_new_message"' : '') 
              . qq| href="$$menuitem[0]" target="_top">$link</a></li>|;
 }  }
   
 # primary_menu() evaluates @primary_menu and returns XHTML for the menu  # primary_menu() evaluates @primary_menu and returns XHTML for the menu
Line 160  sub prep_menuitem { Line 164  sub prep_menuitem {
 # entries from mydesk.tab  # entries from mydesk.tab
 sub primary_menu {  sub primary_menu {
     my $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:      # each element of @primary contains following array:
     # (link url, icon path, alt text, link text, condition)      # (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) {      foreach my $menuitem (@primary_menu) {
         # evaluate conditions           # evaluate conditions 
         next if    ref($menuitem)       ne 'ARRAY';    #          next if    ref($menuitem)       ne 'ARRAY';    #
Line 170  sub primary_menu { Line 181  sub primary_menu {
         next if    $$menuitem[4]        eq 'newmsg'    # arrived or not          next if    $$menuitem[4]        eq 'newmsg'    # arrived or not
                 && !&Apache::lonmsg::mynewmail();      #                   && !&Apache::lonmsg::mynewmail();      # 
         next if    $$menuitem[4]        !~ /public/    ##we've a public user,           next if    $$menuitem[4]        !~ /public/    ##we've a public user, 
                 && $env{'user.name'}    eq 'public'    ##who should not see all                   && $public;                            ##who should not see all 
                 && $env{'user.domain'}  eq 'public';   ##links                                                         ##links
         next if    $$menuitem[4]        eq 'onlypublic'# hide links which are           next if    $$menuitem[4]        eq 'onlypublic'# hide links which are 
                 && $env{'user.name'}    ne 'public'    # only visible to public                  && !$public;                           # only visible to public
                 && $env{'user.domain'}  ne 'public';   # users                                                         # 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;                        # 
         next if    $$menuitem[4]        eq 'roles'     ##show links depending on          next if    $$menuitem[4]        eq 'roles'     ##show links depending on
                 && &Apache::loncommon::show_course();  ##term 'Courses' or                   && &Apache::loncommon::show_course();  ##term 'Courses' or 
         next if    $$menuitem[4]        eq 'courses'   ##'Roles' wanted          next if    $$menuitem[4]        eq 'courses'   ##'Roles' wanted
Line 182  sub primary_menu { Line 204  sub primary_menu {
                   
                           
         if ($$menuitem[3] eq 'Help') { # special treatment for helplink          if ($$menuitem[3] eq 'Help') { # special treatment for helplink
             $menu .= '<li>'.&Apache::loncommon::top_nav_help('Help').'</li>';              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 .= '<li>'.&Apache::loncommon::top_nav_help('Help').'</li>';
               }
         } else {          } else {
             my @items = @{$menuitem};              $menu .= &prep_menuitem($menuitem);
             $items[0] = 'javascript:'.$menuitem->[0].';';  
             $menu .= &prep_menuitem(\@items);  
         }          }
     }      }
   
Line 207  sub secondary_menu { Line 238  sub secondary_menu {
                      $env{'user.domain'}, $env{'user.name'},                       $env{'user.domain'}, $env{'user.name'},
                      $env{'course.' . $env{'request.course.id'} . '.domain'},                       $env{'course.' . $env{'request.course.id'} . '.domain'},
                      $env{'course.' . $env{'request.course.id'} . '.num'});                       $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) {      foreach my $menuitem (@secondary_menu) {
         # evaluate conditions           # evaluate conditions 
         next if    ref($menuitem)  ne 'ARRAY';          next if    ref($menuitem)  ne 'ARRAY';
         next if    $$menuitem[4]   ne 'always'          next if    $$menuitem[4]   eq 'showmenu'
                   && ($custommenu || (!$numdc && $role eq 'cm'));
           next if    $$menuitem[4]   ne 'showmenu'
                   && $$menuitem[4]   ne 'author'
                 && !$env{'request.course.id'};                  && !$env{'request.course.id'};
         next if    $$menuitem[4]   eq 'showreturn'          next if    $$menuitem[4]   eq 'showreturn'
                 && !$showlink                  && !$showlink
Line 232  sub secondary_menu { Line 269  sub secondary_menu {
         next if    $$menuitem[4]   =~ /showgroups$/          next if    $$menuitem[4]   =~ /showgroups$/
                 && !$canviewgrps                  && !$canviewgrps
                 && !%groups;                  && !%groups;
           next if   $$menuitem[4]  eq 'showroles'
         if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {                  && ($custommenu || !$numdc || ($numdc && $env{'request.noversionuri'} eq '/adm/roles'));
           if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'} && !$custommenu) {
             # special treatment for role selector              # special treatment for role selector
             my $roles_selector = &roles_selector(              my $roles_selector = &roles_selector(
                         $env{'course.' . $env{'request.course.id'} . '.domain'},                          $env{'course.' . $env{'request.course.id'} . '.domain'},
Line 277  sub secondary_menu { Line 315  sub secondary_menu {
     return "<ul id=\"LC_secondary_menu\">$menu</ul>";      return "<ul id=\"LC_secondary_menu\">$menu</ul>";
 }  }
   
   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 .= '<li id="current"><a href="'.$links{$item}.'">'.
                        $linktext{$item}.'</a></li>';
           } else {
               $tabs .= '<li><a href="'.$links{$item}.'">'.
                        $linktext{$item}.'</a></li>';
           }
       }
       return '<div id="gciheader">'.
              '<ul>'.$tabs.'</ul></div><br />';
   }
   
 #  #
 # 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
Line 470  ENDINLINEMENU Line 553  ENDINLINEMENU
 }  }
   
 sub show_return_link {  sub show_return_link {
       return unless ($env{'request.course.id'});
       if (($env{'request.noversionuri'} =~ m{^/adm/(viewclasslist|navmaps)($|\?)})
           || ($env{'request.noversionuri'} =~ m{^/adm/.*/aboutme($|\?)})) {
           return if ($env{'form.register'});
       }
     return (($env{'request.noversionuri'}=~m{^/(res|public)/} &&      return (($env{'request.noversionuri'}=~m{^/(res|public)/} &&
      $env{'request.symb'} eq '')       $env{'request.symb'} eq '')
     ||      ||
Line 478  sub show_return_link { Line 566  sub show_return_link {
     (($env{'request.noversionuri'}=~/^\/adm\//) &&      (($env{'request.noversionuri'}=~/^\/adm\//) &&
      ($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) &&       ($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) &&
      ($env{'request.noversionuri'}!~       ($env{'request.noversionuri'}!~
       m[^/adm/.*/(smppg|bulletinboard|aboutme)($|\?)])        m[^/adm/.*/(smppg|bulletinboard)($|\?)])
      ));       ));
 }  }
   
Line 551  sub innerregister { Line 639  sub innerregister {
         } else {          } else {
             $contentstext = &mt('Course Contents');              $contentstext = &mt('Course Contents');
         }          }
         my @crumbs = ({text  => $contentstext,           my @crumbs;
                        href  => "Javascript:gonav('/adm/navmaps')"});          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  => $link});
           }
         if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) {           if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) { 
             push(@crumbs, {text  => '...',              push(@crumbs, {text  => '...',
                            no_mt => 1});                             no_mt => 1});
Line 797  $menuitems.="Make notes and annotations Line 893  $menuitems.="Make notes and annotations
                                 "&go('/adm/requestcourse')&Course requests\n";                                  "&go('/adm/requestcourse')&Course requests\n";
                 }                  }
             }              }
             unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {              unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|portfolio)(\?|$)/) {
  if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/})) {   if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/})) {
     $menuitems.=(<<ENDREALRES);      $menuitems.=(<<ENDREALRES);
 s&6&3&catalog.gif&catalog[_2]&info[_1]&catalog_info()&Show Metadata  s&6&3&catalog.gif&catalog[_2]&info[_1]&catalog_info()&Show Metadata
Line 837  ENDMENUITEMS Line 933  ENDMENUITEMS
     my $addremote=0;      my $addremote=0;
     foreach (@inlineremote) { if ($_ ne '') { $addremote=1; last;} }      foreach (@inlineremote) { if ($_ ne '') { $addremote=1; last;} }
     my $inlinebuttons='';      my $inlinebuttons='';
   
     if ($addremote) {      if ($addremote) {
   
         #SD START (work in progress!)  
         Apache::lonhtmlcommon::clear_breadcrumb_tools();          Apache::lonhtmlcommon::clear_breadcrumb_tools();
         # Arrows for navigation  
         Apache::lonhtmlcommon::add_breadcrumb_tool( 'A', $inlineremote[21] );  
         Apache::lonhtmlcommon::add_breadcrumb_tool( 'A', $inlineremote[23] );  
         if(hidden_button_check() ne 'yes'){  
             # notes  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[93]);  
             # bookmark  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[91]);  
             # evaluate  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[81]);  
             # feedback  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[82]);  
             # print  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[83]);  
             # metadata  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[63]);  
   
             # ?  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'C', $inlineremote[61]);  
             # ?  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'C', $inlineremote[71]);  
             # ?  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'C', $inlineremote[72]);  
             # ?  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'C', $inlineremote[73]);  
             # ?  
             Apache::lonhtmlcommon::add_breadcrumb_tool( 'C', $inlineremote[92]);  
   
               Apache::lonhtmlcommon::add_breadcrumb_tool(
                   'navigation', @inlineremote[21,23]);
           if(hidden_button_check() ne 'yes') {
               Apache::lonhtmlcommon::add_breadcrumb_tool(
                   'tools', @inlineremote[93,91,81,82,83]);
   
               #publish button in construction space
               if ($env{'request.state'} eq 'construct'){
                   Apache::lonhtmlcommon::add_breadcrumb_tool(
                        'advtools', @inlineremote[63]);
               }else{
                   Apache::lonhtmlcommon::add_breadcrumb_tool(
                        'tools', @inlineremote[63]);
               }
   
               unless ($env{'request.noversionuri'}=~ m{^/adm/(navmaps|viewclasslist)(\?|$)}) {
                   Apache::lonhtmlcommon::add_breadcrumb_tool(
                       'advtools', @inlineremote[61,71,72,73,92]);
               }
         }          }
   
         #SD END  
 #       # Registered, textual output  #       # Registered, textual output
 #        if ( $env{'environment.icons'} eq 'iconsonly' ) {  #        if ( $env{'environment.icons'} eq 'iconsonly' ) {
 #            $inlinebuttons = (<<ENDARROWSINLINE);  #            $inlinebuttons = (<<ENDARROWSINLINE);
Line 1332  sub openmenu { Line 1419  sub openmenu {
 }  }
   
 sub inlinemenu {  sub inlinemenu {
       my ($context) = @_;
     undef(@inlineremote);      undef(@inlineremote);
     undef(%category_members);      undef(%category_members);
 # calling rawconfig with "1" will evaluate mydesk.tab, even if there is no active remote control      my $output;
     &rawconfig(1);      if ($context eq 'gcicustom') {
     my $output='<table id="LC_mainmenu"><tr>';          my (%can_request,%request_domains,$canreq,$createtext);
     for (my $col=1; $col<=2; $col++) {          my $role = 'st';
         $output.='<td class="LC_mainmenu_col_fieldset">';          my $custommenu = &Apache::loncommon::needs_gci_custom();
         for (my $row=1; $row<=8; $row++) {          if ($custommenu) {
             foreach my $cat (keys(%category_members)) {              $role = 'cc';
                if ($category_positions{$cat} ne "$col,$row") { next; }          }
                #$output.='<table><tr><td colspan="4" class="LC_menubuttons_category">'.&mt($category_names{$cat}).'</td></tr>';          my %courses = &Apache::loncommon::existing_gcitest_courses($role);
                $output.='<div class="LC_Box">';          my $numcourses = keys(%courses);
        $output.='<h4 class="LC_hcell">'.&mt($category_names{$cat}).'</h4>';          my ($switcher_js,$switcher);
                $output.='<table>';          my $formname = 'testpicker';
                my %active=();          if ($numcourses > 0) {
                foreach my $menu_item (split(/\:/,$category_members{$cat})) {              $switcher = &Apache::loncommon::gcitest_switcher($role,$formname,%courses);
                   if ($inlineremote[$menu_item]) {              my $current;
                      $active{$menu_item}=1;              my $cid = $env{'request.course.id'};
                   }              if ($cid) {
                }                    $current = $role.'./'.$env{'course.'.$cid.'.domain'}.
                foreach my $item (sort(keys(%active))) {                             '/'.$env{'course.'.$cid.'.num'};
                   $output.=$inlineremote[$item];              }
                }              $switcher_js = &Apache::loncommon::gcitest_switcher_js($current,$numcourses,$formname);
                $output.='</table>';              if ($switcher_js) {
                $output.='</div>';                  $switcher_js= <<"ENDSCRIPT";
   <script type="text/javascript">
   // <![CDATA[
   
   $switcher_js
   
   // ]]>
   </script>
   
   ENDSCRIPT
             }              }
          }              $switcher = $switcher_js.$switcher;
          $output.="</td>";          }
           if ($env{'user.domain'} eq 'gci') {
               $canreq =
                   &Apache::lonnet::check_can_request('gcitest',\%can_request,\%request_domains);
               $createtext = &mt('Create Concept Test');
               if ($numcourses) {
                   $createtext = &mt('Create New Test');
               }
           }
           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 .= 
                     '<br /><br clear="all" /><div class="LC_Box LC_GCI_Menu">'.
                     '<h3 class="LC_hcell">'.&mt('Management').'</h3>'.
                     '<div class="LC_GCI_Menu_left">'.
                     '<dl class="LC_GCI_Menu">'.
                     '<dt><a href="'.$navlink.'">'.&mt('Concept Test Contents').'</a></dt>'.
                     '<dd style="background-image:url(\'/res/adm/pages/nav.png\');"><a class="LC_menubuttons_link" href="'.$navlink.'">'.&mt('Display the table of contents for your Concept Test.').'</a></dd>'.
                     '<dt><a href="/adm/coursedocs">'.&mt('Assemble Concept Test').'</a></dt>'.
                     '<dd style="background-image:url(\'/res/adm/pages/docs.png\');"><a class="LC_menubuttons_link" href="/adm/coursedocs">'.&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.').'</a></dd>'.
                     '<dt><a href="/adm/createuser">'.&mt('Enrollment and Student Activity').'</a></dt>'.
                     '<dd style="background-image:url(\'/res/adm/pages/cprv.png\');"><a class="LC_menubuttons_link" href="/adm/createuser">'.&mt('Display or download a course roster, and view information about completion status and last login. You can also add new students, or change access dates for existing students.').'</a></dd></dl></div>'.
                     '<div class="LC_GCI_Menu_right"><dl class="LC_GCI_Menu">'.
                     '<dt><a href="/adm/whatsnew">'.&mt("What's New?").'</a></dt>'.
                     '<dd style="background-image:url(\'/res/adm/pages/new.png\');"><a class="LC_menubuttons_link" href="/adm/whatsnew">'.&mt('View information about changes in your Concept Test course.').'</a></dd>'.
                     '<dt><a href="/adm/printout">'.&mt('Prepare Printable Concept Test').'</a></dt>'.
                     '<dd style="background-image:url(\'/res/adm/pages/prnt.png\');"><a class="LC_menubuttons_link" href="/adm/printout">'.&mt('Create a PDF which you can send to a printer to create a hardcopy of the Concept Test.').'</a></dd>'.
                     '<dt><a href="/adm/statistics">'.&mt('Concept Test Statistics').'</a></dt>'.
                     '<dd style="background-image:url(\'/res/adm/pages/chrt.png\');"><a class="LC_menubuttons_link" href="/adm/statistics">'.&mt('After the closing date of the Concept Test you can view and download statistics for the test, as well as anonymized submission data.').'</a></dd>';
                   if ($canreq) {
                       $output .= '<dt><a href="javascript:switchpage('."'createtest'".');">'.&mt('Create New Test').'</a></dt>'.
                                  '<dd style="background-image:url(\'/res/adm/pages/rcrs.png\');"><a class="LC_menubuttons_link" href="javascript:switchpage('."'createtest'".');">'.
                                  &mt('Create a new Concept Test Course Container. Choose GCI questions  to include in the test and upload a student roster.').'</a></dd>';
                   }
                   $output .= '</dl></div></div><br clear="all"/>';
               } 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') {
                       $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 .= 
                              '<div class="LC_Box LC_GCI_Menu">'.
                              '<h3 class="LC_hcell">'.&mt('Utilities').'</h3>'.
                              '<div class="LC_GCI_Menu_left">'.
                              '<dl class="LC_GCI_Menu">'.
                              '<dt><a href="'.$navlink.'">'.$navtext.'</dt>'.
                              '<dd style="background-image:url(\'/res/adm/pages/nav.png\');">'.
                              '<a class="LC_menubuttons_link" href="'.$navlink.'">'.$navdesc.'</a></dd></dl></div>';
                   if ($canreq) {
                       $output .= '<div class="LC_GCI_Menu_right">'.
                                  '<dl class="LC_GCI_Menu">'.
                                  '<dt><a href="javascript:switchpage('."'createtest'".');">'.$createtext.'</a></dt>'.
                                  '<dd style="background-image:url(\'/res/adm/pages/rcrs.png\');"><a class="LC_menubuttons_link" href="javascript:switchpage('."'createtest'".');">'.&mt('Create a new Concept Test Course Container').'</a>. '.&mt('Choose GCI questions to include in the test and upload a student roster.').'</dd></dl></div>';
                   }
                   $output .= '</div><br clear="all"/>';
               }
           } elsif ($switcher || $canreq) {
               $output .= '<br /><br />'.
                          '<div class="LC_Box LC_GCI_Menu">'.
                          '<h3 class="LC_hcell">'.&mt('Utilities').'</h3>'.
                          '<div class="LC_GCI_Menu_left">'.
                          '<dl class="LC_GCI_Menu">';
               if ($canreq) {
                   $output .= '<dt><a href="javascript:switchpage('."'createtest'".');">'.$createtext.'</a></dt>'.
                              '<dd style="background-image:url(\'/res/adm/pages/rcrs.png\');"><a class="LC_menubuttons_link" href="javascript:switchpage('."'createtest'".');">'.&mt('Create a new Concept Test Course Container. Choose GCI questions to include in the test and upload a student roster.').'</a></dd></dl></div>';
                   if ($switcher) {
                       $output .= '<div class="LC_GCI_Menu_right">'.
                                  '<dl class="LC_GCI_Menu">';
                   }
               }
               if ($switcher) {
                   $output .= '<dt>'.&mt('Select Concept Test').'</dt>'.
                              '<dd style="background-image:url(\'/res/adm/pages/roles.png\');">'.$switcher.'<br /><br /></dd></dl></div>';
               }
               $output .= '</div><br clear="all"/>';
           }
       } elsif ($context eq 'gcinorole') {
           my $queued =  &Apache::loncoursequeueadmin::queued_selfenrollment('notitle');
           if ($queued) {
               $output .= 
                          '<div class="LC_Box">'.
                          '<h3 class="LC_hcell">'.&mt('Pending Enrollment Requests').'</h3>'.
                          $queued.
                          '</div>';
           }
       } else {
           # calling rawconfig with "1" will evaluate mydesk.tab, 
           # even if there is no active remote control
           &rawconfig(1);
           $output='<table><tr>';
           for (my $col=1; $col<=2; $col++) {
               $output.='<td class="LC_mainmenu_col_fieldset">';
               for (my $row=1; $row<=8; $row++) {
                   foreach my $cat (keys(%category_members)) {
                       if ($category_positions{$cat} ne "$col,$row") { next; }
                       $output.='<div class="LC_Box LC_400Box">';
               $output.='<h3 class="LC_hcell">'.&mt($category_names{$cat}).'</h3>';
                       $output.='<table>';
                       my %active=();
                       foreach my $menu_item (split(/\:/,$category_members{$cat})) {
                           if ($inlineremote[$menu_item]) {
                               $active{$menu_item}=1;
                           }
                       }
                       foreach my $item (sort(keys(%active))) {
                           $output.=$inlineremote[$item];
                       }
                       $output.='</table>';
                       $output.='</div>';
                   }
               }
               $output.="</td>";
           }
           $output.="</tr></table>";
     }      }
     $output.="</tr></table>";  
     return $output;      return $output;
 }  }
   
Line 1656  END Line 1879  END
 }  }
   
 sub utilityfunctions {  sub utilityfunctions {
     my $caller = shift;      my ($caller,$custommenu) = @_;
     unless ($env{'environment.remote'} eq 'off' ||       unless ($env{'environment.remote'} eq 'off' || 
             $caller eq '/adm/menu') {               $caller eq '/adm/menu') { 
             return ''; }              return ''; }
                    
       my $gcimenujs;
       if ($custommenu) {
           my %concepttests = &Apache::loncommon::existing_gcitest_courses('cc');
           my $managetesturl = '/adm/menu';
           my $createtesturl = '/adm/requestcourse';
           if (($env{'request.course.id'}) &&
               ($env{'course.'.$env{'request.course.id'}.'.domain'} eq 'gci')) {
               my @items = keys(%concepttests);
               if (@items== 1) {
                   my $newrole = $items[0];
                   $newrole =~ s{_}{/};
                   $managetesturl = '/adm/roles?selectrole=1&cc./'.$newrole.'=1';
               } else {
                   $managetesturl = '/adm/roles?selectrole=1&cm=1&orgurl=%2fadm%2fmenu';
               }
           }
           if ($env{'request.course.id'}) {
               $createtesturl = '/adm/roles?selectrole=1&cm=1&orgurl=%2fadm%2frequestcourse';
           }
           $gcimenujs = <<"ENDCUSTOM";
   
   function switchpage(caller) {
       if (caller == 'review') {
           document.location.href = '/adm/roles?selectrole=1&st./gci/9615072b469884921gcil1=1';
       }
       if (caller == 'submit') {
           document.location.href = '/adm/roles?selectrole=1&st./gci/1H96711d710194bfegcil1=1';
       }
       if (caller == 'createtest') {
           document.location.href = '$createtesturl';
       }
       if (caller == 'managetest') {
           document.location.href = '$managetesturl';
       }
       if (caller == 'tutorial') {
           document.location.href = '/adm/roles?selectrole=1&st./gci/5422913620b814c90gcil1=1';
       }
       return;
   }
   
   ENDCUSTOM
       }
          
     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/}) {
         if ($env{'request.external.querystring'}) {          if ($env{'request.external.querystring'}) {
Line 1708  return (<<ENDUTILITY) Line 1974  return (<<ENDUTILITY)
 $nav_control  $nav_control
 $dc_popup_cid  $dc_popup_cid
   
   $gcimenujs
   
 function go(url) {  function go(url) {
    if (url!='' && url!= null) {     if (url!='' && url!= null) {
        currentURL = null;         currentURL = null;
Line 1716  function go(url) { Line 1984  function go(url) {
    }     }
 }  }
   
 function gotop(url) {  
     if (url!='' && url!= null) {  
         top.location.href = url;  
     }  
 }  
   
 function gopost(url,postdata) {  function gopost(url,postdata) {
    if (url!='') {     if (url!='') {
       this.document.server.action=url;        this.document.server.action=url;
Line 1898  sub hidden_button_check { Line 2160  sub hidden_button_check {
         return;          return;
     }      }
     if ($env{'request.role.adv'}) {      if ($env{'request.role.adv'}) {
         return;          unless (&Apache::loncommon::needs_gci_custom()) {
               return;
           }
     }      }
     my $buttonshide = &Apache::lonnet::EXT('resource.0.buttonshide');      my $buttonshide = &Apache::lonnet::EXT('resource.0.buttonshide');
     return $buttonshide;       return $buttonshide; 

Removed from v.1.308  
changed lines
  Added in v.1.309.2.21


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>