version 1.340, 2018/12/08 15:16:03
|
version 1.347, 2021/04/19 23:07:33
|
Line 148 use HTML::Entities;
|
Line 148 use HTML::Entities;
|
my $registered_cleanup; |
my $registered_cleanup; |
my $rosterupdates; |
my $rosterupdates; |
|
|
|
sub start_loading_course { |
|
my ($r,$title) = @_; |
|
&Apache::loncommon::content_type($r,'text/html'); |
|
&Apache::loncommon::no_cache($r); |
|
$r->send_http_header; |
|
my $swinfo=&Apache::lonmenu::rawconfig(); |
|
# Breadcrumbs |
|
my $brcrum = [{'href' => '', |
|
'text' => $title},]; |
|
my $start_page = &Apache::loncommon::start_page($title,undef, |
|
{'bread_crumbs' => $brcrum,}); |
|
$r->print(<<ENDREDIR); |
|
$start_page |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
$swinfo |
|
// ]]> |
|
</script> |
|
ENDREDIR |
|
return; |
|
} |
|
|
|
sub finish_loading_course { |
|
my ($r,$msg,$url) = @_; |
|
#FIXME add continue link, and add jquery to enable menu links when page is loaded |
|
my $link; |
|
my $end_page = &Apache::loncommon::end_page(); |
|
my $js_url = &js_escape($url); |
|
$r->print(<<END); |
|
$msg |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
\$(document).ready(function() { |
|
var url = "$js_url"; |
|
\$(location).attr('href',url); |
|
}); |
|
</script> |
|
$link |
|
$end_page |
|
END |
|
return; |
|
} |
|
|
sub redirect_user { |
sub redirect_user { |
my ($r,$title,$url,$msg) = @_; |
my ($r,$title,$url,$msg) = @_; |
$msg = $title if (! defined($msg)); |
$msg = $title if (! defined($msg)); |
Line 182 ENDREDIR
|
Line 225 ENDREDIR
|
|
|
sub error_page { |
sub error_page { |
my ($r,$error,$dest)=@_; |
my ($r,$error,$dest)=@_; |
&Apache::loncommon::content_type($r,'text/html'); |
my %lt = &Apache::lonlocal::texthash( |
&Apache::loncommon::no_cache($r); |
pdc => 'Problems during Course Initialization', |
$r->send_http_header; |
tfp => 'The following problems occurred:', |
return OK if $r->header_only; |
con => 'Continue', |
# 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( |
|
'<script type="text/javascript">'. |
|
'// <![CDATA['. |
|
&Apache::lonmenu::rawconfig(). |
|
'// ]]>'. |
|
'</script>'. |
|
'<p class="LC_error">'.&mt('The following problems occurred:'). |
|
'<br />'. |
|
$error. |
|
'</p><br /><a href="'.$dest.'">'.&mt('Continue').'</a>' |
|
); |
); |
$r->print(&Apache::loncommon::end_page()); |
my $end_page = &Apache::loncommon::end_page(); |
|
$dest = &HTML::Entities::encode($dest,'"<>&'); |
|
$r->print(<<END); |
|
<h3>$lt{'pdc'}</h3> |
|
<p class="LC_error">$lt{'tfp'} |
|
<br /> |
|
$error |
|
</p><br /><a href="$dest">$lt{'con'}</a> |
|
$end_page |
|
END |
|
return; |
} |
} |
|
|
sub handler { |
sub handler { |
Line 234 sub handler {
|
Line 270 sub handler {
|
@{$rosterupdates}=(); |
@{$rosterupdates}=(); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); |
|
|
# -------------------------------------------------- Check if setting hot list |
# -------------------------------------------------- Check if setting hot list |
my $hotlist; |
my $hotlist; |
if ($env{'form.action'} eq 'verify_and_change_rolespref') { |
if ($env{'form.action'} eq 'verify_and_change_rolespref') { |
$hotlist = &Apache::lonpreferences::verify_and_change_rolespref($r); |
$hotlist = &Apache::lonpreferences::verify_and_change_rolespref($r); |
Line 505 sub handler {
|
Line 541 sub handler {
|
my $end_page=&Apache::loncommon::end_page(); |
my $end_page=&Apache::loncommon::end_page(); |
my $buttontext=&mt('Enter Course'); |
my $buttontext=&mt('Enter Course'); |
my $message=&mt('Successfully registered key'); |
my $message=&mt('Successfully registered key'); |
|
my $ip = &Apache::lonnet::get_requestor_ip(); |
my $assignresult= |
my $assignresult= |
&Apache::lonnet::assign_access_key( |
&Apache::lonnet::assign_access_key( |
$env{'form.newkey'}, |
$env{'form.newkey'}, |
Line 513 sub handler {
|
Line 550 sub handler {
|
$env{'user.domain'}, |
$env{'user.domain'}, |
$env{'user.name'}, |
$env{'user.name'}, |
&mt('Assigned from [_1] at [_2] for [_3]' |
&mt('Assigned from [_1] at [_2] for [_3]' |
,$ENV{'REMOTE_ADDR'} |
,$ip |
,&Apache::lonlocal::locallocaltime() |
,&Apache::lonlocal::locallocaltime() |
,$trolecode) |
,$trolecode) |
); |
); |
Line 590 ENDENTERKEY
|
Line 627 ENDENTERKEY
|
} |
} |
} |
} |
} |
} |
my $msg; |
my $crstype = &Apache::loncommon::course_type($cdom.'_'.$cnum); |
my ($furl,$ferr)= |
$crstype = lc($crstype); |
&Apache::lonuserstate::readmap($cdom.'/'.$cnum); |
my $preamble = '<div id="LC_update_'.$cdom.'_'.$cnum.'" class="LC_info">'. |
unless ($ferr) { |
'<br />'. |
|
&mt("Please be patient while your $crstype loads"). |
|
'<br /></div>'. |
|
'<div style="padding:0;clear:both;margin:0;border:0"></div>'; |
|
my $closure = <<ENDCLOSE; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
\$("#LC_update_${cdom}_${cnum}").hide('slow'); |
|
// ]]> |
|
</script> |
|
ENDCLOSE |
|
my $title = &mt("Loading $crstype"); |
|
&start_loading_course($r,$title); |
|
my %prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble); |
|
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Loading ...')); |
|
$r->rflush(); |
|
my ($msg,$blockcrit,$critmsg_check); |
|
$critmsg_check = 1; |
|
$blockcrit = &Apache::loncommon::blocking_status('alert',$cnum,$cdom,undef,1); |
|
if ($blockcrit) { |
|
my $checkrole = "cm./$cdom/$cnum"; |
|
if ($csec ne '') { |
|
$checkrole .= "/$csec"; |
|
} |
|
unless ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) && |
|
($trolecode !~ m{^st\./$cdom/$cnum})) { |
|
$critmsg_check = 0; |
|
} |
|
} |
|
my ($furl,$ferr)= |
|
&Apache::lonuserstate::readmap($cdom.'/'.$cnum,$critmsg_check); |
|
&Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished!')); |
|
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
|
$r->print($closure); |
|
$r->rflush(); |
|
if ($ferr) { |
|
$furl = '/adm/roles?tryagain=1'; |
|
} else { |
&Apache::lonnet::appenv({'request.course.timechecked'=>$now}); |
&Apache::lonnet::appenv({'request.course.timechecked'=>$now}); |
unless (($env{'form.switchrole'}) || |
unless (($env{'form.switchrole'}) || |
($env{"environment.internal.$cdom.$cnum.$role.adhoc"})) { |
($env{"environment.internal.$cdom.$cnum.$role.adhoc"})) { |
Line 649 ENDENTERKEY
|
Line 723 ENDENTERKEY
|
} |
} |
if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; } |
if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; } |
&Apache::lonnet::appenv({'request.role.adv'=>$tadv}); |
&Apache::lonnet::appenv({'request.role.adv'=>$tadv}); |
|
if ($ferr) { |
|
if ($env{'form.orgurl'}) { |
|
$furl .= '&orgurl='.&HTML::Entities::encode($env{'form.orgurl'},'<>&"'); |
|
} |
|
if ($env{'form.symb'}) { |
|
$furl .= '&symb='.&HTML::Entities::encode($env{'form.symb'}; |
|
} |
|
} |
if (($ferr) && ($tadv)) { |
if (($ferr) && ($tadv)) { |
&error_page($r,$ferr,$dest); |
&error_page($r,$ferr,$furl); |
} else { |
} else { |
|
if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { |
|
if (($env{'form.orgurl'} ne '') && ($env{'form.symb'} ne '')) { |
|
unless (&Apache::lonnet::symbverify($env{'form.symb'},$env{'form.orgurl'}) { |
|
$dest=$env{'form.orgurl'}; |
|
} |
|
} |
|
} |
if ($dest =~ m{^/adm/coursedocs\?folderpath}) { |
if ($dest =~ m{^/adm/coursedocs\?folderpath}) { |
if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { |
if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
Line 659 ENDENTERKEY
|
Line 748 ENDENTERKEY
|
$cdom.'_'.$cnum); |
$cdom.'_'.$cnum); |
} |
} |
} |
} |
if (($env{'request.lti.login'}) && |
if ($ferr) { |
($env{'request.lti.rosterid'} || $env{'request.lti.passbackid'})) { |
if (!$env{'request.course.id'}) { |
&process_lti($r,$cdom,$cnum); |
&Apache::lonnet::appenv( |
|
{"request.course.id" => $cdom.'_'.$cnum}); |
|
$r->print('<p class="LC_error">'. |
|
&mt('Could not initialize [_1] at this time.', |
|
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
|
'</p>'. |
|
'<p><a href="'.$furl.'">'. |
|
&mt('Please try again.').'</a></p>'. |
|
&Apache::loncommon::end_page()); |
|
} |
|
} else { |
|
if (($env{'request.lti.login'}) && |
|
($env{'request.lti.rosterid'} || $env{'request.lti.passbackid'})) { |
|
&process_lti($r,$cdom,$cnum); |
|
} |
|
$msg = '<p>'.&mt('Entering [_1] ...', |
|
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
|
'</p>'; |
|
&finish_loading_course($r,$msg,$dest); |
} |
} |
$r->internal_redirect($dest); |
|
} |
} |
|
$r->rflush(); |
return OK; |
return OK; |
} else { |
} else { |
if (!$env{'request.course.id'}) { |
if (!$env{'request.course.id'}) { |
&Apache::lonnet::appenv( |
&Apache::lonnet::appenv( |
{"request.course.id" => $cdom.'_'.$cnum}); |
{"request.course.id" => $cdom.'_'.$cnum}); |
$furl='/adm/roles?tryagain=1'; |
|
$msg='<p><span class="LC_error">' |
|
.&mt('Could not initialize [_1] at this time.', |
|
$env{'course.'.$cdom.'_'.$cnum.'.description'}) |
|
.'</span></p>' |
|
.'<p>'.&mt('Please try again.').'</p>' |
|
.'<p>'.$ferr.'</p>'; |
|
} |
} |
if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; } |
if (&Apache::lonnet::allowed('adv') eq 'F') { $tadv=1; } |
&Apache::lonnet::appenv({'request.role.adv'=>$tadv}); |
&Apache::lonnet::appenv({'request.role.adv'=>$tadv}); |
|
if ($ferr) { |
if (($ferr) && ($tadv)) { |
if ($tadv) { |
&error_page($r,$ferr,$furl); |
&error_page($r,$ferr,$furl); |
|
} else { |
|
$r->print('<p class="LC_error">'. |
|
&mt('Could not initialize [_1] at this time.', |
|
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
|
'</p>'. |
|
'<p><a href="'.$furl.'">'.&mt('Please try again.').'</a></p>'. |
|
&Apache::loncommon::end_page()); |
|
} |
} else { |
} else { |
if (($env{'request.lti.login'}) && |
if (($env{'request.lti.login'}) && |
($env{'request.lti.rosterid'} || $env{'request.lti.passbackid'})) { |
($env{'request.lti.rosterid'} || $env{'request.lti.passbackid'})) { |
Line 700 ENDENTERKEY
|
Line 808 ENDENTERKEY
|
my ($score,$incomplete) = |
my ($score,$incomplete) = |
&Apache::lonplacementtest::check_completion(undef,undef,1); |
&Apache::lonplacementtest::check_completion(undef,undef,1); |
if (($incomplete) && ($incomplete < 100)) { |
if (($incomplete) && ($incomplete < 100)) { |
&redirect_user($r, &mt('Entering [_1]', |
$msg = '<p>'.&mt('Entering [_1] ...', |
$env{'course.'.$cdom.'_'.$cnum.'.description'}), |
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
'/adm/placement', $msg); |
'</p>'; |
|
&finish_loading_course($r,$msg,'/adm/placement'); |
|
$r->rflush(); |
return OK; |
return OK; |
} |
} |
} |
} |
Line 721 ENDENTERKEY
|
Line 831 ENDENTERKEY
|
if (($dest =~ m{^\Q/public/$cdom/$cnum/syllabus\E.*(\?|\&)usehttp=1}) || |
if (($dest =~ m{^\Q/public/$cdom/$cnum/syllabus\E.*(\?|\&)usehttp=1}) || |
($dest =~ m{^\Q/adm/wrapper/ext/\E(?!https:)})) { |
($dest =~ m{^\Q/adm/wrapper/ext/\E(?!https:)})) { |
if ($ENV{'SERVER_PORT'} == 443) { |
if ($ENV{'SERVER_PORT'} == 443) { |
my $hostname = $r->hostname(); |
unless (&Apache::lonnet::uses_sts()) { |
if ($hostname ne '') { |
my $hostname = $r->hostname(); |
$dest = 'http://'.$hostname.$dest; |
if ($hostname ne '') { |
|
$dest = 'http://'.$hostname.$dest; |
|
} |
} |
} |
} |
} |
} |
} |
Line 762 ENDENTERKEY
|
Line 874 ENDENTERKEY
|
$dest .= (($dest =~/\?/)? '&':'?').'symb='.$esc_symb; |
$dest .= (($dest =~/\?/)? '&':'?').'symb='.$esc_symb; |
} |
} |
} |
} |
my $title; |
|
unless ($env{'request.lti.login'}) { |
unless ($env{'request.lti.login'}) { |
$title = &mt('Entering [_1]', |
$msg = '<p>'.&mt('Entering [_1] ...', |
$env{'course.'.$cdom.'_'.$cnum.'.description'}); |
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
|
'</p>'; |
} |
} |
&redirect_user($r,$title,$dest,$msg); |
&finish_loading_course($r,$msg,$dest); |
|
$r->rflush(); |
return OK; |
return OK; |
} |
} |
if (&Apache::lonnet::allowed('whn', |
if (&Apache::lonnet::allowed('whn', |
Line 778 ENDENTERKEY
|
Line 891 ENDENTERKEY
|
) { |
) { |
my $startpage = &courseloadpage($env{'request.course.id'}); |
my $startpage = &courseloadpage($env{'request.course.id'}); |
unless ($startpage eq 'firstres') { |
unless ($startpage eq 'firstres') { |
$msg = &mt('Entering [_1] ...', |
$msg = '<p>'.&mt('Entering [_1] ...', |
$env{'course.'.$env{'request.course.id'}.'.description'}); |
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
&redirect_user($r, &mt('New in course'), |
'</p>'; |
'/adm/whatsnew?refpage=start', $msg); |
&finish_loading_course($r,$msg,'/adm/whatsnew?refpage=start'); |
|
$r->rflush(); |
return OK; |
return OK; |
} |
} |
} |
} |
Line 805 ENDENTERKEY
|
Line 919 ENDENTERKEY
|
} elsif ($access eq 'B') { |
} elsif ($access eq 'B') { |
$furl = '/adm/navmaps?showOnlyHomework=1'; |
$furl = '/adm/navmaps?showOnlyHomework=1'; |
} |
} |
my $title; |
|
if ($env{'request.lti.login'}) { |
if ($env{'request.lti.login'}) { |
undef($msg); |
undef($msg); |
|
&finish_loading_course($r,$msg,$furl); |
} else { |
} else { |
$title = &mt('Entering [_1]', |
$msg = '<p>'.&mt('Entering [_1] ...', |
$env{'course.'.$cdom.'_'.$cnum.'.description'}); |
$env{'course.'.$cdom.'_'.$cnum.'.description'}). |
$msg = &mt('Entering [_1] ...', |
'</p>'; |
$env{'course.'.$cdom.'_'.$cnum.'.description'}); |
&finish_loading_course($r,$msg,$furl); |
} |
} |
&redirect_user($r,$title,$furl,$msg); |
|
} |
} |
|
$r->rflush(); |
return OK; |
return OK; |
} |
} |
} |
} |
Line 879 ENDENTERKEY
|
Line 993 ENDENTERKEY
|
$crumbtext = 'Courses'; |
$crumbtext = 'Courses'; |
$pagetitle = 'My Courses'; |
$pagetitle = 'My Courses'; |
$recent = &mt('Recent Courses'); |
$recent = &mt('Recent Courses'); |
$standby = &mt('Course selected. Please stand by.'); |
$standby = &mt('Course selected. Please stand by.'); |
} |
} |
my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}]; |
my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}]; |
|
|
Line 1106 ENDHEADER
|
Line 1220 ENDHEADER
|
|
|
# No active roles |
# No active roles |
if ($countactive==0) { |
if ($countactive==0) { |
&requestcourse_advice($r,$cattype,$inrole); |
my $elapsed = 0; |
|
if ($now && $update) { |
|
$elapsed = $now - $update; |
|
} |
|
&requestcourse_advice($r,$cattype,$inrole,$elapsed); |
$r->print('</form>'); |
$r->print('</form>'); |
if ($countfuture) { |
if ($countfuture) { |
$r->print(&mt('The following [quant,_1,role,roles] will become active in the future:',$countfuture)); |
$r->print(&mt('The following [quant,_1,role,roles] will become active in the future:',$countfuture)); |
Line 1367 sub gather_roles {
|
Line 1485 sub gather_roles {
|
$button=0; |
$button=0; |
unless ($trustchecked{$tdom}) { |
unless ($trustchecked{$tdom}) { |
if ((&Apache::lonnet::will_trust('othcoau',$env{'user.domain'},$tdom)) && |
if ((&Apache::lonnet::will_trust('othcoau',$env{'user.domain'},$tdom)) && |
(&Apache::lonnet::will_trust('coremau',$tdom,$env{'user.domain'}))) { |
(&Apache::lonnet::will_trust('coaurem',$tdom,$env{'user.domain'}))) { |
$willtrust{$tdom} = 1; |
$willtrust{$tdom} = 1; |
$trustchecked{$tdom} = 1; |
$trustchecked{$tdom} = 1; |
} |
} |
Line 1656 sub print_rolerows {
|
Line 1774 sub print_rolerows {
|
} |
} |
|
|
sub findcourse_advice { |
sub findcourse_advice { |
my ($r,$cattype) = @_; |
my ($r,$cattype,$elapsed) = @_; |
my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); |
my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); |
my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); |
my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); |
if (&Apache::lonnet::auto_run(undef,$env{'user.domain'})) { |
if (&Apache::lonnet::auto_run(undef,$env{'user.domain'})) { |
$r->print(&mt('If you were expecting to see an active role listed for a particular course in the [_1] domain, it may be missing for one of the following reasons:',$domdesc).' |
$r->print('<p>'.&mt('If you were expecting to see an active role listed for a particular course in the [_1] domain, it may be missing for one of the following reasons:',$domdesc).' |
<ul> |
<ul> |
<li>'.&mt('The course has yet to be created.').'</li> |
<li>'.&mt('The course has yet to be created.').'</li> |
<li>'.&mt('Automatic enrollment of registered students has not been enabled for the course.').'</li> |
<li>'.&mt('Automatic enrollment of registered students has not been enabled for the course.').'</li> |
<li>'.&mt('You are in a section of course for which automatic enrollment in the corresponding LON-CAPA course is not active.').'</li> |
<li>'.&mt('You are in a section of course for which automatic enrollment in the corresponding LON-CAPA course is not active.').'</li> |
<li>'.&mt('The start date for automated enrollment has yet to be reached.').'</li> |
<li>'.&mt('The start date for automated enrollment has yet to be reached.').'</li> |
<li>'.&mt('You registered for the course recently and there is a time lag between the time you register, and the time this information becomes available for the update of LON-CAPA course rosters.').'</li> |
<li>'.&mt('You registered for the course recently and there is a time lag between the time you register, and the time this information becomes available for the update of LON-CAPA course rosters.').'</li> |
<li>'.&mt('Automated enrollment added you to the course in the time since you last logged in.').' '.&mt('If that is the case you can use the "Check for changes" link in the gray Functions bar to update the list of your available course roles.').'</li> |
<li>'.&mt('Automated enrollment added you to the course in the time since you last logged-in.').' '.&mt('If that is the case you can use the "Check for changes" link in the gray Functions bar to update the list of your available course roles.').'</li> |
</ul>'); |
</ul></p>'); |
} else { |
} 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.').'<br />'); |
$r->print('<p>'.&mt('If you were expecting to see an active role listed for a particular course, that course may not have been created yet.').'</p>'); |
|
if ($elapsed > 600) { |
|
$r->print('<p>'.&mt('You may also have been assigned to a course in the time since you last logged-in, or checked for changes'). |
|
'<br />'. |
|
&mt('If that is the case you can use the "Check for changes" link in the gray Functions bar to update the list of your available course roles.').'</p>'); |
|
} |
} |
} |
if (($cattype eq 'std') || ($cattype eq 'domonly')) { |
if (($cattype eq 'std') || ($cattype eq 'domonly')) { |
$r->print('<h3>'.&mt('Self-Enrollment').'</h3>'. |
$r->print('<h3>'.&mt('Self-Enrollment').'</h3>'. |
Line 1682 sub findcourse_advice {
|
Line 1805 sub findcourse_advice {
|
} |
} |
|
|
sub requestcourse_advice { |
sub requestcourse_advice { |
my ($r,$cattype,$inrole) = @_; |
my ($r,$cattype,$inrole,$elapsed) = @_; |
my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); |
my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); |
my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); |
my $esc_dom = &HTML::Entities::encode($env{'user.domain'},'"<>&'); |
my (%can_request,%request_doms,$output); |
my (%can_request,%request_doms,$output); |
Line 1743 sub requestcourse_advice {
|
Line 1866 sub requestcourse_advice {
|
} else { |
} else { |
$r->print('<h3>'.&mt('Currently no active roles, courses or communities').'</h3>'); |
$r->print('<h3>'.&mt('Currently no active roles, courses or communities').'</h3>'); |
} |
} |
&findcourse_advice($r,$cattype); |
&findcourse_advice($r,$cattype,$elapsed); |
} |
} |
return; |
return; |
} |
} |