Diff for /loncom/interface/lonmainmenu.pm between versions 1.8 and 1.8.4.3

version 1.8, 2009/07/13 08:24:21 version 1.8.4.3, 2009/12/07 22:33:26
Line 43  use Apache::Constants qw(:common); Line 43  use Apache::Constants qw(:common);
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonmenu();  use Apache::lonmenu();
   use Apache::lonlocal;
   use LONCAPA qw(:DEFAULT :match);
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 56  sub handler { Line 58  sub handler {
  $form=&Apache::lonmenu::serverform();   $form=&Apache::lonmenu::serverform();
     }      }
   
     my $script_tag;      my $custommenu = &Apache::loncommon::needs_gci_custom();
       my ($script_tag,$switcher);
     if ($env{'environment.remote'} ne 'off') {      if ($env{'environment.remote'} ne 'off') {
         my $utility=&Apache::lonmenu::utilityfunctions('/adm/menu');          my $utility=&Apache::lonmenu::utilityfunctions('/adm/menu');
         $script_tag=(<<ENDSCRIPT);          $script_tag=(<<ENDSCRIPT);
Line 64  sub handler { Line 67  sub handler {
 $utility  $utility
 </script>  </script>
 ENDSCRIPT  ENDSCRIPT
       } elsif ($custommenu) {
           my $switcher_js;
           my %courses = &Apache::loncommon::existing_gcitest_courses();
           my $numcourses = keys(%courses);
           if ($numcourses > 0) {
               $switcher = &gcitest_switcher(%courses);
               my $current;
               if ($env{'request.course.id'}) {
                   $current = 'cc./'.$env{'course.'.$env{'request.course.id'}.'.domain'}.
                              '/'.$env{'course.'.$env{'request.course.id'}.'.num'};
               }
               $switcher_js = &gcitest_switcher_js($current,$numcourses);
               $script_tag= <<"ENDSCRIPT";
   <script type="text/javascript">
   $switcher_js
   </script>
   ENDSCRIPT
           }
     }      }
 # ---- Print the screen, pretend to be in text mode to generate text-based menu  # ---- Print the screen, pretend to be in text mode to generate text-based menu
 # temporarily set interface to "faketextual" and remote to "off", which renders  # temporarily set interface to "faketextual" and remote to "off", which renders
Line 74  ENDSCRIPT Line 95  ENDSCRIPT
     $r->print(&Apache::loncommon::start_page( 'Main Menu',      $r->print(&Apache::loncommon::start_page( 'Main Menu',
                                               $script_tag,                                                $script_tag,
                                               {'bread_crumbs' => 1}));                                                {'bread_crumbs' => 1}));
     $r->print(&Apache::lonmenu::inlinemenu().$form);      if ($custommenu) {
           $r->print(&Apache::lonmenu::inlinemenu('gcicustom',$switcher).$form);
       } else {
           $r->print(&Apache::lonmenu::inlinemenu().$form);
       }
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
     return OK;      return OK;
 }  }
   
   sub gcitest_switcher {
       my (%courses) = @_;
       my $output;
       my %Sortby;
       foreach my $course (sort(keys(%courses))) {
           next unless (ref($courses{$course}) eq 'HASH');
           my $clean_title = $courses{$course}{'description'};
           $clean_title =~ s/\W+//g;
           if ($clean_title eq '') {
               $clean_title = $courses{$course}{'description'};
           }
           push(@{$Sortby{$clean_title}},$course);
       }
       my @sorted_courses = sort { lc($a) cmp lc($b) } (keys(%Sortby));
       my $default;
       if (@sorted_courses > 1) {
           if (($env{'request.course.id'}) && ($courses{$env{'request.course.id'}})) {
               $default = &mt('Switch concept test ...');
           } else {
               $default = &mt('Select a concept test ...');
           }
       } else {
           unless (($env{'request.course.id'}) && ($courses{$env{'request.course.id'}})) {
               $default = &mt('Select concept test ...');
           }
       }
       if ($default) {
           $output = '<form name="pickrole" action="/adm/roles" method="post">'.
                     '<select name="newrole" method="post" onchange="javascript:courseswitcher();">'.
                     '<option value="" selected="selected">'.$default.'</option>';
           foreach my $item (@sorted_courses) {
               foreach my $course (@{$Sortby{$item}}) {
                   my ($cdom,$cnum) = split('_',$course);
                   $output .= '<option value="cc./'.$cdom.'/'.$cnum.'">'.$item.'</option>';
               }
           }
           $output .= '</select><input type="hidden" name="selectrole" value="" /></form>';
       }
       return $output;
   }
   
   sub gcitest_switcher_js {
       my ($current,$numcourses) = @_;
       my $output = <<"ENDJS";
   
   function courseswitcher(caller) {
       var numcourses = $numcourses;
       var current = '$current';
       var choice = document.pickrole.newrole.options[document.pickrole.newrole.selectedIndex].value;
       if (choice == '') {
           if (caller == 'icon') {
               alert('No Concept Test selected');
           }
           document.pickrole.selectrole.value = '';
           return;
       }
       if (choice == current) {
           if ((caller != 'icon') && (numcourses > 1)) {
               alert('You have selected the current course.\\nPlease select a different Concept Test course');
           }
           document.pickrole.newrole.selectedIndex = 0;
           document.pickrole.selectrole.value = '';
           return;
       }
       document.pickrole.selectrole.value = '1';
       document.pickrole.submit();
       return;
   }
   
   ENDJS
       return $output;
   }
   
 1;  1;
 __END__  __END__

Removed from v.1.8  
changed lines
  Added in v.1.8.4.3


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