version 1.231.4.14, 2010/06/02 16:27:43
|
version 1.248, 2010/06/02 14:55:37
|
Line 57 course they should act on, etc. Both in
|
Line 57 course they should act on, etc. Both in
|
handler determines via C<lonnet>'s C<&allowed> function that a certain |
handler determines via C<lonnet>'s C<&allowed> function that a certain |
action is not allowed, C<lonroles> is used as error handler. This |
action is not allowed, C<lonroles> is used as error handler. This |
allows the user to select another role which may have permission to do |
allows the user to select another role which may have permission to do |
what they were trying to do. C<lonroles> can also be accessed via the |
what they were trying to do. |
B<CRS> button in the Remote Control. |
|
|
|
=begin latex |
=begin latex |
|
|
Line 138 use Apache::lonannounce;
|
Line 137 use Apache::lonannounce;
|
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonpageflip(); |
use Apache::lonpageflip(); |
use Apache::lonnavdisplay(); |
use Apache::lonnavdisplay(); |
|
use Apache::loncoursequeueadmin; |
use GDBM_File; |
use GDBM_File; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
use HTML::Entities; |
use HTML::Entities; |
|
|
|
|
sub redirect_user { |
sub redirect_user { |
my ($r,$title,$url,$msg,$launch_nav) = @_; |
my ($r,$title,$url,$msg) = @_; |
$msg = $title if (! defined($msg)); |
$msg = $title if (! defined($msg)); |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::no_cache($r); |
&Apache::loncommon::no_cache($r); |
$r->send_http_header; |
$r->send_http_header; |
my $swinfo=&Apache::lonmenu::rawconfig(); |
|
my $navwindow; |
|
if ($launch_nav eq 'on') { |
|
$navwindow.=&Apache::lonnavdisplay::launch_win('now',undef,undef, |
|
($url =~ m-^/adm/whatsnew-)); |
|
} else { |
|
$navwindow.=&Apache::lonnavmaps::close(); |
|
} |
|
|
|
|
# Breadcrumbs |
|
my $brcrum = [{'href' => $url, |
|
'text' => 'Switching Role'},]; |
my $start_page = &Apache::loncommon::start_page('Switching Role',undef, |
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(); |
my $end_page = &Apache::loncommon::end_page(); |
|
|
# Note to style police: |
# Note to style police: |
Line 167 sub redirect_user {
|
Line 163 sub redirect_user {
|
$url=~s/ /\%20/g; |
$url=~s/ /\%20/g; |
$r->print(<<ENDREDIR); |
$r->print(<<ENDREDIR); |
$start_page |
$start_page |
<script type="text/javascript"> |
|
// <![CDATA[ |
|
$swinfo |
|
// ]]> |
|
</script> |
|
$navwindow |
|
<p>$msg</p> |
<p>$msg</p> |
$end_page |
$end_page |
ENDREDIR |
ENDREDIR |
Line 185 sub error_page {
|
Line 175 sub error_page {
|
&Apache::loncommon::no_cache($r); |
&Apache::loncommon::no_cache($r); |
$r->send_http_header; |
$r->send_http_header; |
return OK if $r->header_only; |
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( |
'<script type="text/javascript">'. |
'<script type="text/javascript">'. |
'// <![CDATA['. |
'// <![CDATA['. |
&Apache::lonmenu::rawconfig(). |
&Apache::lonmenu::rawconfig(). |
'// ]]>'. |
'// ]]>'. |
'</script>'. |
'</script>'. |
'<p class="LC_error">'.&mt('The following problems occurred:'). |
'<p class="LC_error">'.&mt('The following problems occurred:'). |
'<br />'. |
'<br />'. |
$error. |
$error. |
'</p><br /><a href="'.$dest.'">'.&mt('Continue').'</a>'. |
'</p><br /><a href="'.$dest.'">'.&mt('Continue').'</a>' |
&Apache::loncommon::end_page()); |
); |
|
$r->print(&Apache::loncommon::end_page()); |
} |
} |
|
|
sub handler { |
sub handler { |
Line 480 ENDENTERKEY
|
Line 478 ENDENTERKEY
|
} |
} |
$courseid =~ s/\//_/; |
$courseid =~ s/\//_/; |
if ((($role eq 'cc') || ($role eq 'co')) |
if ((($role eq 'cc') || ($role eq 'co')) |
&& ($env{'course.' . $courseid .'.course.helper.not.run'})) { |
&& ($env{'course.' . $courseid .'.course.helper.not.run'})) { |
$furl = "/adm/helper/course.initialization.helper"; |
$furl = "/adm/helper/course.initialization.helper"; |
# Send the user to the course they selected |
# Send the user to the course they selected |
} elsif ($env{'request.course.id'}) { |
} elsif ($env{'request.course.id'}) { |
Line 490 ENDENTERKEY
|
Line 488 ENDENTERKEY
|
my $esc_symb = &HTML::Entities::encode($env{'form.destsymb'},'"<>&'); |
my $esc_symb = &HTML::Entities::encode($env{'form.destsymb'},'"<>&'); |
$dest .= '?symb='.$esc_symb; |
$dest .= '?symb='.$esc_symb; |
} |
} |
&redirect_user($r,&mt('Entering [_1]', |
&redirect_user($r, &mt('Entering [_1]', |
$env{'course.'.$courseid.'.description'}), |
$env{'course.'.$courseid.'.description'}), |
$dest,$msg, |
$dest, $msg); |
$env{'environment.remotenavmap'}); |
|
return OK; |
return OK; |
} |
} |
if (&Apache::lonnet::allowed('whn', |
if (&Apache::lonnet::allowed('whn', |
Line 506 ENDENTERKEY
|
Line 503 ENDENTERKEY
|
unless ($startpage eq 'firstres') { |
unless ($startpage eq 'firstres') { |
$msg = &mt('Entering [_1] ...', |
$msg = &mt('Entering [_1] ...', |
$env{'course.'.$courseid.'.description'}); |
$env{'course.'.$courseid.'.description'}); |
&redirect_user($r,&mt('New in course'), |
&redirect_user($r, &mt('New in course'), |
'/adm/whatsnew?refpage=start',$msg, |
'/adm/whatsnew?refpage=start', $msg); |
$env{'environment.remotenavmap'}); |
|
return OK; |
return OK; |
} |
} |
} |
} |
Line 520 ENDENTERKEY
|
Line 516 ENDENTERKEY
|
} |
} |
$msg = &mt('Entering [_1] ...', |
$msg = &mt('Entering [_1] ...', |
$env{'course.'.$courseid.'.description'}); |
$env{'course.'.$courseid.'.description'}); |
&redirect_user($r,&mt('Entering [_1]', |
&redirect_user($r, &mt('Entering [_1]', |
$env{'course.'.$courseid.'.description'}), |
$env{'course.'.$courseid.'.description'}), |
$furl,$msg, |
$furl, $msg); |
$env{'environment.remotenavmap'}); |
|
} |
} |
return OK; |
return OK; |
} |
} |
Line 702 ENDHEADER
|
Line 697 ENDHEADER
|
$r->print(&Apache::loncoursequeueadmin::queued_selfenrollment()); |
$r->print(&Apache::loncoursequeueadmin::queued_selfenrollment()); |
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'},'"<>&'); |
|
|
$r->print( |
$r->print( |
'<p>' |
'<p>' |
.&mt('[_1]Visit the [_2]Course/Community Catalog[_3]' |
.&mt('[_1]Visit the [_2]Course/Community Catalog[_3]' |
Line 727 ENDHEADER
|
Line 721 ENDHEADER
|
$r->print('<h2>'.&mt('Currently no active roles, courses or communities').'</h2>'); |
$r->print('<h2>'.&mt('Currently no active roles, courses or communities').'</h2>'); |
} |
} |
&findcourse_advice($r); |
&findcourse_advice($r); |
&requestcourse_advice($r); |
&requestcourse_advice($r); |
$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 758 ENDHEADER
|
Line 752 ENDHEADER
|
return OK; |
return OK; |
} |
} |
# ----------------------------------------------------------------------- Table |
# ----------------------------------------------------------------------- Table |
|
|
if ($numdc > 0) { |
if ($numdc > 0) { |
$r->print(&coursepick_jscript()); |
$r->print(&coursepick_jscript()); |
$r->print(&Apache::loncommon::coursebrowser_javascript(). |
$r->print(&Apache::loncommon::coursebrowser_javascript(). |
Line 775 ENDHEADER
|
Line 770 ENDHEADER
|
$env{'form.destsymb'}.'" />'); |
$env{'form.destsymb'}.'" />'); |
} |
} |
} |
} |
|
|
my $doheaders = &roletable_headers($r,\%roleclass,\%sortrole,$nochoose); |
my $doheaders = &roletable_headers($r,\%roleclass,\%sortrole,$nochoose); |
if ($env{'environment.recentroles'}) { |
if ($env{'environment.recentroles'}) { |
my %recent_roles = |
my %recent_roles = |
Line 784 ENDHEADER
|
Line 780 ENDHEADER
|
if (ref($roletext{'user.role.'.$role}) eq 'ARRAY') { |
if (ref($roletext{'user.role.'.$role}) eq 'ARRAY') { |
$output.= &Apache::loncommon::start_data_table_row(). |
$output.= &Apache::loncommon::start_data_table_row(). |
$roletext{'user.role.'.$role}->[0]. |
$roletext{'user.role.'.$role}->[0]. |
|
&Apache::loncommon::end_data_table_row(). |
|
&Apache::loncommon::continue_data_table_row(). |
|
$roletext{'user.role.'.$role}->[1]. |
&Apache::loncommon::end_data_table_row(); |
&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 ($role =~ m{dc\./($match_domain)/} |
&& $dcroles{$1}) { |
&& $dcroles{$1}) { |
$output .= &adhoc_roles_row($1,'recent'); |
$output .= &adhoc_roles_row($1,'recent'); |
} |
} |
} elsif ($numdc > 0) { |
} elsif ($numdc > 0) { |
unless ($role =~/^error\:/) { |
unless ($role =~/^error\:/) { |
my ($roletext,$role_text_end) = &display_cc_role('user.role.'.$role); |
$output.=&display_cc_role('user.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(); |
|
} |
} |
} |
} |
} |
} |
Line 988 sub gather_roles {
|
Line 976 sub gather_roles {
|
$sortkey=$role."\0".$tdom."\0".$newhash{'description'}. |
$sortkey=$role."\0".$tdom."\0".$newhash{'description'}. |
"\0".$envkey; |
"\0".$envkey; |
$twhere=&HTML::Entities::encode($newhash{'description'},'"<>&'). |
$twhere=&HTML::Entities::encode($newhash{'description'},'"<>&'). |
' <span class="LC_fontsize_small">'. |
' <span class="LC_fontsize_small">'. |
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom). |
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom). |
'</span>'; |
'</span>'; |
$ttype = $newhash{'type'}; |
$ttype = $newhash{'type'}; |
$trole = &Apache::lonnet::plaintext($role,$ttype,$tcourseid); |
$trole = &Apache::lonnet::plaintext($role,$ttype,$tcourseid); |
} else { |
} else { |
Line 1124 sub print_rolerows {
|
Line 1112 sub print_rolerows {
|
if (ref($roletext->{$sortrole->{$which}}) eq 'ARRAY') { |
if (ref($roletext->{$sortrole->{$which}}) eq 'ARRAY') { |
$output.= &Apache::loncommon::start_data_table_row(). |
$output.= &Apache::loncommon::start_data_table_row(). |
$roletext->{$sortrole->{$which}}->[0]. |
$roletext->{$sortrole->{$which}}->[0]. |
|
&Apache::loncommon::end_data_table_row(). |
|
&Apache::loncommon::continue_data_table_row(). |
|
$roletext->{$sortrole->{$which}}->[1]. |
&Apache::loncommon::end_data_table_row(); |
&Apache::loncommon::end_data_table_row(); |
if ($roletext->{$sortrole->{$which}}->[1] ne '') { |
|
$output .= &Apache::loncommon::continue_data_table_row(). |
|
$roletext->{$sortrole->{$which}}->[1]. |
|
&Apache::loncommon::end_data_table_row(); |
|
} |
|
} |
} |
if ($sortrole->{$which} =~ m-dc\./($match_domain)/-) { |
if ($sortrole->{$which} =~ m-dc\./($match_domain)/-) { |
if (ref($dcroles) eq 'HASH') { |
if (ref($dcroles) eq 'HASH') { |
Line 1187 sub requestcourse_advice {
|
Line 1173 sub requestcourse_advice {
|
&Apache::lonnet::check_can_request($env{'user.domain'},\%can_request,\%request_doms); |
&Apache::lonnet::check_can_request($env{'user.domain'},\%can_request,\%request_doms); |
if (keys(%request_doms) > 0) { |
if (keys(%request_doms) > 0) { |
my ($types,$typename) = &Apache::loncommon::course_types(); |
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('<h3>'.&mt('Request creation of a course or community').'</h3>'. |
$r->print('<h3>'.&mt('Request creation of a course or community').'</h3>'. |
'<p>'.&mt('You have rights to request the creation of courses and/or communities in the following domain(s):').'<ul>'); |
'<p>'.&mt('You have rights to request the creation of courses and/or communities in the following domain(s):').'<ul>'); |
my (@reqdoms,@reqtypes); |
my (@reqdoms,@reqtypes); |
foreach my $type (sort(keys(%request_doms))) { |
foreach my $type (sort(keys(%request_doms))) { |
push(@reqtypes,$type); |
push(@reqtypes,$type); |
if (ref($request_doms{$type}) eq 'ARRAY') { |
if (ref($request_doms{$type}) eq 'ARRAY') { |
my $domstr = join(', ',map { &Apache::lonnet::domain($_) } sort(@{$request_doms{$type}})); |
my $domstr = join(', ',map { &Apache::lonnet::domain($_) } sort(@{$request_doms{$type}})); |
$r->print( |
$r->print( |
Line 1225 sub requestcourse_advice {
|
Line 1211 sub requestcourse_advice {
|
} |
} |
if (@reqdoms == 1 || @showtypes > 0) { |
if (@reqdoms == 1 || @showtypes > 0) { |
$requrl .= '&state=crstype&action=new'; |
$requrl .= '&state=crstype&action=new'; |
} |
} |
$r->print('</ul>'.&mt('Use the [_1]request form[_2] to submit a request for creation of a new course or community.','<a href="'.$requrl.'">','</a>').'</p>'); |
$r->print('</ul>'.&mt('Use the [_1]request form[_2] to submit a request for creation of a new course or community.','<a href="'.$requrl.'">','</a>').'</p>'); |
} |
} |
} |
} |
Line 1556 sub display_cc_role {
|
Line 1542 sub display_cc_role {
|
unless ($rolekey =~/^error\:/) { |
unless ($rolekey =~/^error\:/) { |
if ($rolekey =~ m{^user\.role\.(cc|co)\./($match_domain)/($match_courseid)$}) { |
if ($rolekey =~ m{^user\.role\.(cc|co)\./($match_domain)/($match_courseid)$}) { |
my $ccrole = $1; |
my $ccrole = $1; |
my $tdom = $2; |
my $tcourseid = $2.'_'.$3; |
my $trest = $3; |
my $trolecode = $1.'./'.$2.'/'.$3; |
my $tcourseid = $tdom.'_'.$trest; |
|
my $trolecode = $ccrole.'./'.$tdom.'/'.$trest; |
|
my $twhere; |
my $twhere; |
my $ttype; |
my $ttype; |
my $tbg='LC_roles_is'; |
my $tbg='LC_roles_is'; |
Line 1567 sub display_cc_role {
|
Line 1551 sub display_cc_role {
|
if (%newhash) { |
if (%newhash) { |
$twhere=$newhash{'description'}. |
$twhere=$newhash{'description'}. |
' <span style="LC_fontsize_small">'. |
' <span style="LC_fontsize_small">'. |
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom). |
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$2,$1). |
'</span>'; |
'</span>'; |
$ttype = $newhash{'type'}; |
$ttype = $newhash{'type'}; |
} else { |
} else { |
Line 1575 sub display_cc_role {
|
Line 1559 sub display_cc_role {
|
$env{'course.'.$tcourseid.'.description'}=$twhere; |
$env{'course.'.$tcourseid.'.description'}=$twhere; |
} |
} |
my $trole = &Apache::lonnet::plaintext($ccrole,$ttype,$tcourseid); |
my $trole = &Apache::lonnet::plaintext($ccrole,$ttype,$tcourseid); |
$twhere.="<br />".&mt('Domain').":".$tdom; |
$twhere.="<br />".&mt('Domain').":".$1; |
($roletext,$roletext_end) = &build_roletext($trolecode,$tdom,$trest,'is',$tryagain,$advanced,'',$tbg,$trole,$twhere,'','','',1,''); |
($roletext,$roletext_end) = &build_roletext($trolecode,$1,$2,'is',$tryagain,$advanced,'',$tbg,$trole,$twhere,'','','',1,''); |
} |
} |
} |
} |
return ($roletext,$roletext_end); |
return ($roletext,$roletext_end); |
Line 1594 sub adhoc_roles_row {
|
Line 1578 sub adhoc_roles_row {
|
my $carole = &Apache::lonnet::plaintext('ca'); |
my $carole = &Apache::lonnet::plaintext('ca'); |
my $selectcalink = &coauthorlink($dcdom,$rowtype); |
my $selectcalink = &coauthorlink($dcdom,$rowtype); |
$output.=$ccrole.': '.$selectcclink |
$output.=$ccrole.': '.$selectcclink |
.' | '.$carole.': '.$selectcalink.'</td>' |
.' | '.$carole.': '.$selectcalink |
.&Apache::loncommon::end_data_table_row(); |
.&Apache::loncommon::end_data_table_row(); |
return $output; |
return $output; |
} |
} |
Line 1652 course they should act on, etc. Both in
|
Line 1636 course they should act on, etc. Both in
|
handler determines via C<lonnet>'s C<&allowed> function that a certain |
handler determines via C<lonnet>'s C<&allowed> function that a certain |
action is not allowed, C<lonroles> is used as error handler. This |
action is not allowed, C<lonroles> is used as error handler. This |
allows the user to select another role which may have permission to do |
allows the user to select another role which may have permission to do |
what they were trying to do. C<lonroles> can also be accessed via the |
what they were trying to do. |
B<CRS> button in the Remote Control. |
|
|
|
=begin latex |
=begin latex |
|
|