--- loncom/auth/lonroles.pm 2010/06/02 15:56:39 1.231.4.13 +++ loncom/auth/lonroles.pm 2009/10/26 21:16:38 1.236 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.231.4.13 2010/06/02 15:56:39 raeburn Exp $ +# $Id: lonroles.pm,v 1.236 2009/10/26 21:16:38 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -158,8 +158,12 @@ sub redirect_user { $navwindow.=&Apache::lonnavmaps::close(); } + # Breadcrumbs + my $brcrum = [{'href' => $url, + 'text' => 'Switching Role'},]; my $start_page = &Apache::loncommon::start_page('Switching Role',undef, - {'redirect' => [1,$url]}); + {'redirect' => [1,$url], + 'bread_crumbs' => $brcrum,}); my $end_page = &Apache::loncommon::end_page(); # Note to style police: @@ -185,17 +189,25 @@ sub error_page { &Apache::loncommon::no_cache($r); $r->send_http_header; return OK if $r->header_only; - $r->print(&Apache::loncommon::start_page('Problems during Course Initialization'). + # Breadcrumbs + my $brcrum = [{'href' => $dest, + 'text' => 'Problems during Course Initialization'},]; + $r->print(&Apache::loncommon::start_page('Problems during Course Initialization', + undef, + {'bread_crumbs' => $brcrum,}) + ); + $r->print( ''. '

'.&mt('The following problems occurred:'). - '
'. + '
'. $error. - '


'.&mt('Continue').''. - &Apache::loncommon::end_page()); + '


'.&mt('Continue').'' + ); + $r->print(&Apache::loncommon::end_page()); } sub handler { @@ -243,12 +255,12 @@ sub handler { # Check if user is a DC trying to enter a course or author space and needs privs to be created if ($numdc > 0) { foreach my $envkey (keys %env) { -# Is this an ad-hoc Coordinator role? - if (my ($ccrole,$domain,$coursenum) = - ($envkey =~ m-^form\.(cc|co)\./($match_domain)/($match_courseid)$-)) { +# Is this an ad-hoc CC-role? + if (my ($domain,$coursenum) = + ($envkey =~ m-^form\.cc\./($match_domain)/($match_courseid)$-)) { if ($dcroles{$domain}) { &Apache::lonnet::check_adhoc_privs($domain,$coursenum, - $then,$refresh,$now,$ccrole); + $then,$refresh,$now,'cc'); } last; } @@ -261,7 +273,7 @@ sub handler { my ($server_status,$home) = &check_author_homeserver($user,$domain); if ($server_status eq 'switchserver') { my $trolecode = 'au./'.$domain.'/'; - my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode; + my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode; $r->internal_redirect($switchserver); } last; @@ -272,7 +284,7 @@ sub handler { my ($server_status,$home) = &check_author_homeserver($user,$domain); if ($server_status eq 'switchserver') { my $trolecode = 'ca./'.$domain.'/'.$user; - my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode; + my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode; $r->internal_redirect($switchserver); } last; @@ -293,7 +305,7 @@ sub handler { if ($server_status eq 'switchserver') { my $trolecode = 'ca./'.$domain.'/'.$user; my $switchserver = '/adm/switchserver?' - .'otherserver='.$home.'&role='.$trolecode; + .'otherserver='.$home.'&role='.$trolecode; $r->internal_redirect($switchserver); } } else { @@ -479,8 +491,8 @@ ENDENTERKEY $courseid = substr($courseid, 1); } $courseid =~ s/\//_/; - if ((($role eq 'cc') || ($role eq 'co')) - && ($env{'course.' . $courseid .'.course.helper.not.run'})) { + if ($role eq 'cc' && $env{'course.' . $courseid . + '.course.helper.not.run'}) { $furl = "/adm/helper/course.initialization.helper"; # Send the user to the course they selected } elsif ($env{'request.course.id'}) { @@ -692,17 +704,15 @@ ENDHEADER $refresh = $now; &Apache::lonnet::appenv({'user.refresh.time' => $refresh}); if ($env{'user.adv'}) { - $r->print('

' - .' ' - .'

'); + $r->print(' />

'); } else { if ($countactive > 0) { - $r->print(&Apache::loncoursequeueadmin::queued_selfenrollment()); + &queued_selfenrollment($r); my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); - $r->print( '

' .&mt('[_1]Visit the [_2]Course/Community Catalog[_3]' @@ -727,7 +737,7 @@ ENDHEADER $r->print('

'.&mt('Currently no active roles, courses or communities').'

'); } &findcourse_advice($r); - &requestcourse_advice($r); + &requestcourse_advice($r); $r->print(''); if ($countfuture) { $r->print(&mt('The following [quant,_1,role,roles] will become active in the future:',$countfuture)); @@ -758,12 +768,6 @@ ENDHEADER return OK; } # ----------------------------------------------------------------------- Table - if ($numdc > 0) { - $r->print(&coursepick_jscript()); - $r->print(&Apache::loncommon::coursebrowser_javascript(). - &Apache::loncommon::authorbrowser_javascript()); - } - unless ((!&Apache::loncommon::show_course()) || ($nochoose) || ($countactive==1)) { $r->print("

".&mt('Select a Course to Enter')."

\n"); } @@ -780,31 +784,23 @@ ENDHEADER my %recent_roles = &Apache::lonhtmlcommon::get_recent('roles',$env{'environment.recentrolesn'}); my $output=''; - foreach my $role (sort(keys(%recent_roles))) { - if (ref($roletext{'user.role.'.$role}) eq 'ARRAY') { + foreach (sort(keys(%recent_roles))) { + if (ref($roletext{'user.role.'.$_}) eq 'ARRAY') { $output.= &Apache::loncommon::start_data_table_row(). - $roletext{'user.role.'.$role}->[0]. + $roletext{'user.role.'.$_}->[0]. + &Apache::loncommon::end_data_table_row(). + &Apache::loncommon::continue_data_table_row(). + $roletext{'user.role.'.$_}->[1]. &Apache::loncommon::end_data_table_row(); - if ($roletext{'user.role.'.$role}->[1] ne '') { - $output .= &Apache::loncommon::continue_data_table_row(). - $roletext{'user.role.'.$role}->[1]. - &Apache::loncommon::end_data_table_row(); - } - if ($role =~ m{dc\./($match_domain)/} + if ($_ =~ m-dc\./($match_domain)/- && $dcroles{$1}) { $output .= &adhoc_roles_row($1,'recent'); } } elsif ($numdc > 0) { - unless ($role =~/^error\:/) { - my ($roletext,$role_text_end) = &display_cc_role('user.role.'.$role); - $output.= &Apache::loncommon::start_data_table_row(). - $roletext. - &Apache::loncommon::end_data_table_row(). - &Apache::loncommon::continue_data_table_row(). - $role_text_end. - &Apache::loncommon::end_data_table_row(); + unless ($_ =~/^error\:/) { + $output.=&display_cc_role('user.role.'.$_); } - } + } } if ($output) { $r->print(&Apache::loncommon::start_data_table_empty_row() @@ -817,6 +813,12 @@ ENDHEADER $doheaders ++; } } + + if ($numdc > 0) { + $r->print(&coursepick_jscript()); + $r->print(&Apache::loncommon::coursebrowser_javascript(). + &Apache::loncommon::authorbrowser_javascript()); + } &print_rolerows($r,$doheaders,\%roleclass,\%sortrole,\%dcroles,\%roletext); if ($countactive > 1) { my $tremark=''; @@ -939,7 +941,7 @@ sub gather_roles { foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } if (!$allowed) { $button=0; - $switchserver='otherserver='.$home.'&role='.$trolecode; + $switchserver='otherserver='.$home.'&role='.$trolecode; } #next if ($home eq 'no_host'); $home = &Apache::lonnet::hostname($home); @@ -959,7 +961,7 @@ sub gather_roles { foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } if (!$allowed) { $button=0; - $switchserver='otherserver='.$home.'&role='.$trolecode; + $switchserver='otherserver='.$home.'&role='.$trolecode; } #next if ($home eq 'no_host'); $home = &Apache::lonnet::hostname($home); @@ -972,11 +974,10 @@ sub gather_roles { } elsif ($trest) { my $tcourseid=$tdom.'_'.$trest; $ttype = &Apache::loncommon::course_type($tcourseid); - $trole = &Apache::lonnet::plaintext($role,$ttype,$tcourseid); + $trole = &Apache::lonnet::plaintext($role,$ttype); if ($env{'course.'.$tcourseid.'.description'}) { $twhere=$env{'course.'.$tcourseid.'.description'}; $sortkey=$role."\0".$tdom."\0".$twhere."\0".$envkey; - $twhere = &HTML::Entities::encode($twhere,'"<>&'); unless ($twhere eq &mt('Currently not available')) { $twhere.=' '. &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom). @@ -987,12 +988,12 @@ sub gather_roles { if (%newhash) { $sortkey=$role."\0".$tdom."\0".$newhash{'description'}. "\0".$envkey; - $twhere=&HTML::Entities::encode($newhash{'description'},'"<>&'). + $twhere=$newhash{'description'}. ' '. &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom). ''; $ttype = $newhash{'type'}; - $trole = &Apache::lonnet::plaintext($role,$ttype,$tcourseid); + $trole = &Apache::lonnet::plaintext($role,$ttype); } else { $twhere=&mt('Currently not available'); $env{'course.'.$tcourseid.'.description'}=$twhere; @@ -1108,7 +1109,7 @@ sub roletable_headers { } sub roletypes { - my @types = ('Domain','Construction Space','Course','Community','Unavailable','System'); + my @types = ('Domain','Construction Space','Course','Unavailable','System'); return @types; } @@ -1172,8 +1173,8 @@ sub findcourse_advice { } $r->print('

'.&mt('Self-Enrollment').'

'. '

'.&mt('The [_1]Course/Community Catalog[_2] provides information about all [_3] classes for which LON-CAPA courses have been created, as well as any communities in the domain.','','',$domdesc).'
'); - $r->print(&mt('You can search for courses and communities which permit self-enrollment, if you would like to enroll in one.').'

'. - &Apache::loncoursequeueadmin::queued_selfenrollment()); + $r->print(&mt('You can search for courses and communities which permit self-enrollment, if you would like to enroll in one.').'

'); + &queued_selfenrollment($r); return; } @@ -1185,22 +1186,16 @@ sub requestcourse_advice { &Apache::lonnet::check_can_request($env{'user.domain'},\%can_request,\%request_doms); if (keys(%request_doms) > 0) { my ($types,$typename) = &Apache::loncommon::course_types(); - if ((ref($types) eq 'ARRAY') && (ref($typename) eq 'HASH')) { + if ((ref($types) eq 'ARRAY') && (ref($typename) eq 'HASH')) { $r->print('

'.&mt('Request creation of a course or community').'

'. - '

'.&mt('You have rights to request the creation of courses and/or communities in the following domain(s):').'