version 1.8.4.5, 2009/12/15 05:17:52
|
version 1.8.4.12, 2010/12/05 19:43:10
|
Line 53 sub handler {
|
Line 53 sub handler {
|
$r->send_http_header; |
$r->send_http_header; |
return OK if $r->header_only; |
return OK if $r->header_only; |
|
|
my $form; |
my $custommenu = &Apache::loncommon::needs_gci_custom(); |
|
my $cid = $env{'request.course.id'}; |
|
|
|
my %cicourses; |
|
my $udom = $env{'user.domain'}; |
|
my %allnums = &Apache::loncommon::get_faculty_cnums(); |
|
if (($udom ne '') && (ref($allnums{$udom}) eq 'HASH')) { |
|
foreach my $key (%{$allnums{$udom}}) { |
|
$cicourses{$udom.'_'.$key} = $allnums{$udom}->{$key}; |
|
} |
|
} |
|
|
|
if (($custommenu && $cid ne '' && ($cicourses{$cid} || $env{'request.role'} !~ m{^cc\./\Q$udom\Etest/})) || |
|
($cid ne '' && $env{'user.domain'} =~ /^\w+citest$/)) { |
|
$r->internal_redirect('/adm/navmaps'); |
|
return OK; |
|
} |
|
|
|
my $form; |
if ($env{'environment.remote'} ne 'off') { |
if ($env{'environment.remote'} ne 'off') { |
$form=&Apache::lonmenu::serverform(); |
$form=&Apache::lonmenu::serverform(); |
} |
} |
|
|
my $custommenu = &Apache::loncommon::needs_gci_custom(); |
my $script_tag; |
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 67 sub handler {
|
Line 84 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"> |
|
// <![CDATA[ |
|
|
|
$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 96 ENDSCRIPT
|
Line 91 ENDSCRIPT
|
$env{'browser.interface'}='faketextual'; |
$env{'browser.interface'}='faketextual'; |
$env{'environment.remote'}='off'; |
$env{'environment.remote'}='off'; |
|
|
$r->print(&Apache::loncommon::start_page( 'Main Menu', |
# Breadcrumbs |
$script_tag, |
my ($nocrumbs,$args); |
{'bread_crumbs' => 1})); |
|
if ($custommenu) { |
if ($custommenu) { |
$r->print(&Apache::lonmenu::inlinemenu('gcicustom',$switcher).$form); |
if ($env{'request.course.id'}) { |
} else { |
unless ($cicourses{$env{'request.course.id'}}) { |
$r->print(&Apache::lonmenu::inlinemenu().$form); |
$nocrumbs = 1; |
} |
} |
$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 = $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 { |
} else { |
$default = &mt('Select a concept test ...'); |
$nocrumbs = 1; |
} |
|
} else { |
|
unless (($env{'request.course.id'}) && ($courses{$env{'request.course.id'}})) { |
|
$default = &mt('Select concept test ...'); |
|
} |
} |
} |
} |
if ($default) { |
unless ($nocrumbs) { |
$output = '<form name="pickrole" action="/adm/roles" method="post">'. |
my $brcrum = []; |
'<select name="newrole" onchange="javascript:courseswitcher();">'. |
$args = {bread_crumbs => $brcrum}; |
'<option value="" selected="selected">'.$default.'</option>'; |
} |
foreach my $item (@sorted_courses) { |
$r->print(&Apache::loncommon::start_page('Main Menu',$script_tag,$args)); |
foreach my $course (@{$Sortby{$item}}) { |
|
my ($cdom,$cnum) = split('_',$course); |
my ($rolecount,$numcourses) = (0,0); |
$output .= '<option value="cc./'.$cdom.'/'.$cnum.'">'.$courses{$course}{'description'}.'</option>'; |
my $now = time; |
} |
unless (($custommenu) || ($env{'user.domain'} =~ /^\w+citest$/)) { |
} |
foreach my $envkey (keys(%env)) { |
$output .= '</select><input type="hidden" name="selectrole" value="" /></form>'; |
next unless ($envkey =~ /^user\.role\./); |
|
my ($start,$end) = split(/\./,$env{$envkey}); |
|
if (($start eq '' || $start <= $now) && ($end eq '' || $end > $now)) { |
|
$rolecount ++; |
|
} |
|
} |
} |
} |
return $output; |
if ($custommenu) { |
} |
$r->print(&Apache::lonmenu::inlinemenu('gcicustom').$form); |
|
} elsif (!$rolecount) { |
sub gcitest_switcher_js { |
$r->print(&Apache::lonmenu::inlinemenu('gcinorole').$form); |
my ($current,$numcourses) = @_; |
} else { |
my $output = <<"ENDJS"; |
$r->print(&Apache::lonmenu::inlinemenu().$form); |
|
|
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) { |
$r->print(&Apache::loncommon::end_page()); |
if ((caller != 'icon') && (numcourses > 1)) { |
return OK; |
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; |