--- loncom/auth/lonroles.pm 2009/08/05 13:39:56 1.231 +++ loncom/auth/lonroles.pm 2010/01/02 19:14:29 1.231.4.9 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.231 2009/08/05 13:39:56 bisitz Exp $ +# $Id: lonroles.pm,v 1.231.4.9 2010/01/02 19:14:29 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -158,12 +158,8 @@ 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], - 'bread_crumbs' => $brcrum,}); + {'redirect' => [1,$url]}); my $end_page = &Apache::loncommon::end_page(); # Note to style police: @@ -189,25 +185,17 @@ sub error_page { &Apache::loncommon::no_cache($r); $r->send_http_header; return OK if $r->header_only; - # 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( + $r->print(&Apache::loncommon::start_page('Problems during Course Initialization'). ''. '

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


'.&mt('Continue').'' - ); - $r->print(&Apache::loncommon::end_page()); + '


'.&mt('Continue').''. + &Apache::loncommon::end_page()); } sub handler { @@ -238,7 +226,7 @@ sub handler { # Check if user is CC trying to select a course role if ($env{'form.switchrole'}) { if (!defined($env{'user.role.'.$env{'form.switchrole'}})) { - &adhoc_course_role($then); + &adhoc_course_role($refresh,$then); } } my %temp=('logout_'.$env{'request.course.id'} => time); @@ -671,11 +659,12 @@ ENDHEADER if ($reinit) { $r->print( '

'. - &mt('As your session file for the course has expired, you will need to re-select the course.').'

'); + &mt('As your session file for the course or community has expired, you will need to re-select the course.').''); } else { $r->print( '

'. - &mt('You need to choose another user role or enter a specific course for this function').'

'); + &mt('You need to choose another user role or enter a specific course or community for this function.'). + ''); } } } @@ -703,27 +692,41 @@ ENDHEADER $refresh = $now; &Apache::lonnet::appenv({'user.refresh.time' => $refresh}); if ($env{'user.adv'}) { - $r->print( - '

'); + $r->print(' />'.&mt('Show all roles').'' + .' ' + .'

'); } else { if ($countactive > 0) { &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 Catalog[_3] to view all [_4] LON-CAPA courses.','','','',$domdesc).'
'.&mt('If a course is [_1]not[_2] in your list of current courses below, you may be able to enroll if self-enrollment is permitted.','','').'

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

' + .&mt('[_1]Visit the [_2]Course/Community Catalog[_3]' + .' to view all [_4] LON-CAPA courses and communities.' + ,'' + ,'' + ,'',$domdesc) + .'
' + .&mt('If a course or community is [_1]not[_2] in your list of current courses and communities below,' + .' you may be able to enroll if self-enrollment is permitted.' + ,'','') + .'

' + ); } } # No active roles if ($countactive==0) { if ($inrole) { - $r->print('

'.&mt('Currently no additional roles or courses').'

'); + $r->print('

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

'); } else { - $r->print('

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

'); + $r->print('

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

'); } &findcourse_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)); @@ -848,7 +851,7 @@ ENDHEADER .'
' .''.&mt('Logout').'  ' .'' - .&mt('Course Catalog') + .&mt('Course/Community Catalog') .'

'); } $r->print(&Apache::loncommon::end_page()); @@ -1095,7 +1098,7 @@ sub roletable_headers { } sub roletypes { - my @types = ('Domain','Construction Space','Course','Unavailable','System'); + my @types = ('Domain','Construction Space','Course','Community','Unavailable','System'); return @types; } @@ -1157,12 +1160,66 @@ sub findcourse_advice { } else { $r->print(&mt('If you were expecting to see an active role listed for a particular course, that course may not have been created yet.').'
'); } - $r->print('

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

'); + $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.').'

'); &queued_selfenrollment($r); return; } +sub requestcourse_advice { + my ($r) = @_; + my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); + my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); + my (%can_request,%request_doms); + &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')) { + $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):').'

'.&mt('Use the [_1]request form[_2] to submit a request for creation of a new course or community.','','').'

'); + } + } + return; +} + sub queued_selfenrollment { my ($r) = @_; my %selfenrollrequests = &Apache::lonnet::dump('selfenrollrequests'); @@ -1384,21 +1441,22 @@ sub check_fordc { } sub adhoc_course_role { - my ($then) = @_; - my ($cdom,$cnum); + my ($refresh,$then) = @_; + my ($cdom,$cnum,$crstype); $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; - if (&check_forcc($cdom,$cnum,$then)) { + $crstype = &Apache::loncommon::course_type(); + if (&check_forcc($cdom,$cnum,$refresh,$then,$crstype)) { my $setprivs; if (!defined($env{'user.role.'.$env{'form.switchrole'}})) { $setprivs = 1; } else { my ($start,$end) = split(/\./,$env{'user.role.'.$env{'form.switchrole'}}); - if (($start && ($start>$then || $start == -1)) || + if (($start && ($start>$refresh || $start == -1)) || ($end && $end<$then)) { $setprivs = 1; } - } + } if ($setprivs) { if ($env{'form.switchrole'} =~ m-^(in|ta|ep|ad|st|cr)([\w/]*)\./\Q$cdom\E/\Q$cnum\E/?(\w*)$-) { my $role = $1; @@ -1428,7 +1486,7 @@ sub adhoc_course_role { } &Apache::lonnet::standard_roleprivs(\%newrole,$role,$cdom,$spec,$cnum,$area); &Apache::lonnet::set_userprivs(\%userroles,\%newrole,\%newgroups); - my $adhocstart = $then-1; + my $adhocstart = $refresh-1; $userroles{'user.role.'.$spec} = $adhocstart.'.'; &Apache::lonnet::appenv(\%userroles,[$role,'cm']); } @@ -1438,15 +1496,20 @@ sub adhoc_course_role { } sub check_forcc { - my ($cdom,$cnum,$then) = @_; - my $is_cc; + my ($cdom,$cnum,$refresh,$then,$crstype) = @_; + my ($is_cc,$ccrole); + if ($crstype eq 'Community') { + $ccrole = 'co'; + } else { + $ccrole = 'cc'; + } if ($cdom ne '' && $cnum ne '') { if (&Apache::lonnet::is_course($cdom,$cnum)) { - my $envkey = 'user.role.cc./'.$cdom.'/'.$cnum; + my $envkey = 'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum; if (defined($env{$envkey})) { $is_cc = 1; my ($tstart,$tend)=split(/\./,$env{$envkey}); - if ($tstart && $tstart>$then) { $is_cc = 0; } + if ($tstart && $tstart>$refresh) { $is_cc = 0; } if ($tend && $tend <$then) { $is_cc = 0; } } } @@ -1459,7 +1522,7 @@ sub courselink { my $courseform=&Apache::loncommon::selectcourse_link ('rolechoice','dccourse'.$rowtype.'_'.$dcdom, 'dcdomain'.$rowtype.'_'.$dcdom,'coursedesc'.$rowtype.'_'. - $dcdom,$dcdom,undef); + $dcdom,$dcdom,undef,'Course/Community'); my $hiddenitems = ''. ''. ''. @@ -1469,8 +1532,8 @@ sub courselink { sub coursepick_jscript { my %lt = &Apache::lonlocal::texthash( - plsu => "Please use the 'Select Course' link to open a separate pick course window where you may select the course you wish to enter.", - youc => 'You can only use this screen to select courses in the current domain.', + plsu => "Please use the 'Select Course/Community' link to open a separate pick course window where you may select the course or community you wish to enter.", + youc => 'You can only use this screen to select courses and communities in the current domain.', ); my $verify_script = <<"END";