[LON-CAPA-cvs] cvs: loncom(GCI_3) /interface lonmainmenu.pm
raeburn
raeburn@source.lon-capa.org
Mon, 07 Dec 2009 18:37:11 -0000
raeburn Mon Dec 7 18:37:11 2009 EDT
Modified files: (Branch: GCI_3)
/loncom/interface lonmainmenu.pm
Log:
- Customizations for GCI_3.
- Main Menu for GCI users has select box to switch to/between Concept Tests
if user is a CC for one or more tests.
Index: loncom/interface/lonmainmenu.pm
diff -u loncom/interface/lonmainmenu.pm:1.8 loncom/interface/lonmainmenu.pm:1.8.4.1
--- loncom/interface/lonmainmenu.pm:1.8 Mon Jul 13 08:24:21 2009
+++ loncom/interface/lonmainmenu.pm Mon Dec 7 18:37:11 2009
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# displays the main menu
#
-# $Id: lonmainmenu.pm,v 1.8 2009/07/13 08:24:21 www Exp $
+# $Id: lonmainmenu.pm,v 1.8.4.1 2009/12/07 18:37:11 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -43,6 +43,8 @@
use Apache::loncommon();
use Apache::lonnet;
use Apache::lonmenu();
+use Apache::lonlocal;
+use LONCAPA qw(:DEFAULT :match);
sub handler {
my $r = shift;
@@ -56,7 +58,8 @@
$form=&Apache::lonmenu::serverform();
}
- my $script_tag;
+ my $custommenu = &Apache::loncommon::needs_gci_custom();
+ my ($script_tag,$switcher);
if ($env{'environment.remote'} ne 'off') {
my $utility=&Apache::lonmenu::utilityfunctions('/adm/menu');
$script_tag=(<<ENDSCRIPT);
@@ -64,6 +67,24 @@
$utility
</script>
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
# temporarily set interface to "faketextual" and remote to "off", which renders
@@ -74,11 +95,55 @@
$r->print(&Apache::loncommon::start_page( 'Main Menu',
$script_tag,
{'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());
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 = $courseinfo{$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;
+}
1;
__END__