version 1.280, 2013/01/01 03:45:13
|
version 1.290, 2013/08/10 20:28:14
|
Line 139 use Apache::lonpageflip();
|
Line 139 use Apache::lonpageflip();
|
use Apache::lonnavdisplay(); |
use Apache::lonnavdisplay(); |
use Apache::loncoursequeueadmin; |
use Apache::loncoursequeueadmin; |
use Apache::longroup; |
use Apache::longroup; |
|
use Apache::lonrss; |
use GDBM_File; |
use GDBM_File; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
use HTML::Entities; |
use HTML::Entities; |
Line 310 sub handler {
|
Line 311 sub handler {
|
my $trolecode = 'au./'.$domain.'/'; |
my $trolecode = 'au./'.$domain.'/'; |
my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode; |
my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode; |
$r->internal_redirect($switchserver); |
$r->internal_redirect($switchserver); |
|
return OK; |
} |
} |
last; |
last; |
} |
} |
Line 321 sub handler {
|
Line 323 sub handler {
|
my $trolecode = 'ca./'.$domain.'/'.$user; |
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); |
$r->internal_redirect($switchserver); |
|
return OK; |
} |
} |
last; |
last; |
} |
} |
Line 342 sub handler {
|
Line 345 sub handler {
|
my $switchserver = '/adm/switchserver?' |
my $switchserver = '/adm/switchserver?' |
.'otherserver='.$home.'&role='.$trolecode; |
.'otherserver='.$home.'&role='.$trolecode; |
$r->internal_redirect($switchserver); |
$r->internal_redirect($switchserver); |
|
return OK; |
} |
} |
} else { |
} else { |
delete($env{$envkey}); |
delete($env{$envkey}); |
Line 518 ENDENTERKEY
|
Line 522 ENDENTERKEY
|
my $msg; |
my $msg; |
my ($furl,$ferr)= |
my ($furl,$ferr)= |
&Apache::lonuserstate::readmap($cdom.'/'.$cnum); |
&Apache::lonuserstate::readmap($cdom.'/'.$cnum); |
unless (($ferr) || ($env{'form.switchrole'}) || |
unless ($ferr) { |
($env{"environment.internal.$cdom.$cnum.$role.adhoc"})) { |
unless (($env{'form.switchrole'}) || |
&Apache::lonnet::put('nohist_crslastlogin', |
($env{"environment.internal.$cdom.$cnum.$role.adhoc"})) { |
{$env{'user.name'}.':'.$env{'user.domain'}. |
&Apache::lonnet::put('nohist_crslastlogin', |
':'.$csec.':'.$role => $now},$cdom,$cnum); |
{$env{'user.name'}.':'.$env{'user.domain'}. |
|
':'.$csec.':'.$role => $now},$cdom,$cnum); |
|
} |
|
my ($feeds,$syllabus_time); |
|
&Apache::lonrss::advertisefeeds($cnum,$cdom,undef,\$feeds); |
|
&Apache::lonnet::appenv({'request.course.feeds' => $feeds}); |
|
&Apache::lonnet::get_numsuppfiles($cnum,$cdom,1); |
|
unless ($env{'course.'.$cdom.'_'.$cnum.'.updatedsyllabus'}) { |
|
unless (($env{'course.'.$cdom.'_'.$cnum.'.externalsyllabus'}) || |
|
($env{'course.'.$cdom.'_'.$cnum.'.uploadedsyllabus'})) { |
|
my %syllabus=&Apache::lonnet::dump('syllabus',$cdom,$cnum); |
|
$syllabus_time = $syllabus{'uploaded.lastmodified'}; |
|
if ($syllabus_time) { |
|
&Apache::lonnet::appenv({'request.course.syllabustime' => $syllabus_time}); |
|
} |
|
} |
|
} |
} |
} |
if (($env{'form.orgurl'}) && |
if (($env{'form.orgurl'}) && |
($env{'form.orgurl'}!~/^\/adm\/flip/)) { |
($env{'form.orgurl'}!~/^\/adm\/flip/)) { |
Line 611 ENDENTERKEY
|
Line 631 ENDENTERKEY
|
} |
} |
if (($checkenc) && ($destsymb ne '')) { |
if (($checkenc) && ($destsymb ne '')) { |
my ($encstate,$unencsymb,$res); |
my ($encstate,$unencsymb,$res); |
my $unencsymb = &Apache::lonnet::symbclean($destsymb); |
$unencsymb = &Apache::lonnet::symbclean($destsymb); |
(undef,undef,$res) = &Apache::lonnet::decode_symb($unencsymb); |
(undef,undef,$res) = &Apache::lonnet::decode_symb($unencsymb); |
&Apache::lonnet::symbverify($unencsymb,$res,\$encstate); |
&Apache::lonnet::symbverify($unencsymb,$res,\$encstate); |
if ($encstate) { |
if ($encstate) { |
Line 672 ENDENTERKEY
|
Line 692 ENDENTERKEY
|
$redirect_url .= $where; |
$redirect_url .= $where; |
} |
} |
$redirect_url .= '/'; |
$redirect_url .= '/'; |
&redirect_user($r,&mt('Entering Construction Space'), |
&redirect_user($r,&mt('Entering Authoring Space'), |
$redirect_url); |
$redirect_url); |
return OK; |
return OK; |
} |
} |
Line 704 ENDENTERKEY
|
Line 724 ENDENTERKEY
|
my $crumbtext = 'User Roles'; |
my $crumbtext = 'User Roles'; |
my $pagetitle = 'My Roles'; |
my $pagetitle = 'My Roles'; |
my $recent = &mt('Recent Roles'); |
my $recent = &mt('Recent Roles'); |
|
my $standby = &mt('Role selected. Please stand by.'); |
my $show_course=&Apache::loncommon::show_course(); |
my $show_course=&Apache::loncommon::show_course(); |
if ($show_course) { |
if ($show_course) { |
$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.'); |
} |
} |
my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}]; |
my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}]; |
|
|
Line 718 ENDENTERKEY
|
Line 740 ENDENTERKEY
|
my $swinfo=&Apache::lonmenu::rawconfig(); |
my $swinfo=&Apache::lonmenu::rawconfig(); |
my $start_page=&Apache::loncommon::start_page($pagetitle,undef,{bread_crumbs=>$brcrum}); |
my $start_page=&Apache::loncommon::start_page($pagetitle,undef,{bread_crumbs=>$brcrum}); |
my $funcs = &get_roles_functions($showcount); |
my $funcs = &get_roles_functions($showcount); |
my $standby=&mt('Role selected. Please stand by.'); |
|
$standby=~s/\n/\\n/g; |
$standby=~s/\n/\\n/g; |
my $noscript='<br /><span class="LC_error">'.&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.').'<br />'.&mt('As this is not the case, most functionality in the system will be unavailable.').'</span><br />'; |
my $noscript='<br /><span class="LC_error">'.&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.').'<br />'.&mt('As this is not the case, most functionality in the system will be unavailable.').'</span><br />'; |
|
|
Line 1136 sub gather_roles {
|
Line 1157 sub gather_roles {
|
} |
} |
#next if ($home eq 'no_host'); |
#next if ($home eq 'no_host'); |
$home = &Apache::lonnet::hostname($home); |
$home = &Apache::lonnet::hostname($home); |
$ttype='Construction Space'; |
$ttype='Authoring Space'; |
$twhere=&mt('User').': '.$trest.'<br />'.&mt('Domain'). |
$twhere=&mt('User').': '.$trest.'<br />'.&mt('Domain'). |
': '.$tdom.'<br />'. |
': '.$tdom.'<br />'. |
' '.&mt('Server').': '.$home; |
' '.&mt('Server').': '.$home; |
Line 1155 sub gather_roles {
|
Line 1176 sub gather_roles {
|
} |
} |
#next if ($home eq 'no_host'); |
#next if ($home eq 'no_host'); |
$home = &Apache::lonnet::hostname($home); |
$home = &Apache::lonnet::hostname($home); |
$ttype='Construction Space'; |
$ttype='Authoring Space'; |
$twhere=&mt('Domain').': '.$tdom.'<br />'.&mt('Server'). |
$twhere=&mt('Domain').': '.$tdom.'<br />'.&mt('Server'). |
': '.$home; |
': '.$home; |
$env{'course.'.$tdom.'_'.$trest.'.description'}='ca'; |
$env{'course.'.$tdom.'_'.$trest.'.description'}='ca'; |
Line 1328 sub roletable_headers {
|
Line 1349 sub roletable_headers {
|
} |
} |
|
|
sub roletypes { |
sub roletypes { |
my @types = ('Domain','Construction Space','Course','Community','Unavailable','System'); |
my @types = ('Domain','Authoring Space','Course','Community','Unavailable','System'); |
return @types; |
return @types; |
} |
} |
|
|
Line 1467 sub privileges_info {
|
Line 1488 sub privileges_info {
|
my (undef,$tdom,$trest,$tsec)=split(m{/},$where); |
my (undef,$tdom,$trest,$tsec)=split(m{/},$where); |
if ($trest) { |
if ($trest) { |
if ($env{'course.'.$tdom.'_'.$trest.'.description'} eq 'ca') { |
if ($env{'course.'.$tdom.'_'.$trest.'.description'} eq 'ca') { |
$ttype='Construction Space'; |
$ttype='Authoring Space'; |
$twhere='User: '.$trest.', Domain: '.$tdom; |
$twhere='User: '.$trest.', Domain: '.$tdom; |
} else { |
} else { |
$ttype= &Apache::loncommon::course_type($tdom.'_'.$trest); |
$ttype= &Apache::loncommon::course_type($tdom.'_'.$trest); |
Line 2152 sub update_session_roles {
|
Line 2173 sub update_session_roles {
|
my $status_in_db = |
my $status_in_db = |
&curr_role_status($tstart,$tend,$refresh,$now); |
&curr_role_status($tstart,$tend,$refresh,$now); |
my ($rdummy,$rest) = split(/\//,$role,2); |
my ($rdummy,$rest) = split(/\//,$role,2); |
my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role); |
|
my %currpriv; |
my %currpriv; |
unless (exists($crprivs{$rest})) { |
unless (exists($crprivs{$rest})) { |
my ($rdomain,$rauthor,$rrole)=split(/\//,$rest); |
my ($rdomain,$rauthor,$rrole)=split(/\//,$rest); |
Line 2406 sub update_session_roles {
|
Line 2426 sub update_session_roles {
|
} |
} |
$groupmsg .= '<li><b>'. |
$groupmsg .= '<li><b>'. |
$env{'course.'.$cdom.'_'.$cnum.'.description'}.'</b><ul>'; |
$env{'course.'.$cdom.'_'.$cnum.'.description'}.'</b><ul>'; |
|
$currcrs = $cdom.'_'.$cnum; |
} |
} |
my ($cdom,$cnum) = split(/\//,$1); |
|
my $group = $2; |
|
my $groupdesc; |
my $groupdesc; |
unless (ref($curr_groups{$cdom.'_'.$cnum}) eq 'HASH') { |
unless (ref($curr_groups{$cdom.'_'.$cnum}) eq 'HASH') { |
%{$curr_groups{$cdom.'_'.$cnum}} = |
%{$curr_groups{$cdom.'_'.$cnum}} = |
Line 2423 sub update_session_roles {
|
Line 2442 sub update_session_roles {
|
&unescape($groupinfo{'description'}); |
&unescape($groupinfo{'description'}); |
} |
} |
$groupdesc = $groupdescs{$cdom.'_'.$cnum}{$group}; |
$groupdesc = $groupdescs{$cdom.'_'.$cnum}{$group}; |
$groupmsg .= '<li>'. |
if ($groupdesc) { |
&mt('[_1] with status: [_2].', |
$groupmsg .= '<li>'. |
'<b>'.$groupdesc.'</b>',$newgroup{$item}).'</li>'; |
&mt('[_1] with status: [_2].', |
|
'<b>'.$groupdesc.'</b>',$newgroup{$item}).'</li>'; |
|
} |
} |
} |
} |
} |
if ($groupmsg) { |
if ($groupmsg) { |
Line 2439 sub update_session_roles {
|
Line 2460 sub update_session_roles {
|
} |
} |
} |
} |
if (keys(%newrole) > 0) { |
if (keys(%newrole) > 0) { |
$changemsg .= '<li>'.&mt('New roles'). |
my $newmsg; |
'<ul>'; |
|
foreach my $item (sort(keys(%newrole))) { |
foreach my $item (sort(keys(%newrole))) { |
my $desc = &role_desc($item,$update,$refresh,$now); |
my $desc = &role_desc($item,$update,$refresh,$now); |
$changemsg .= '<li>'. |
if ($desc) { |
&mt('[_1] with status: [_2].', |
$newmsg .= '<li>'. |
$desc,$newrole{$item}).'</li>'; |
&mt('[_1] with status: [_2].', |
|
$desc,$newrole{$item}).'</li>'; |
|
} |
|
} |
|
if ($newmsg) { |
|
$changemsg .= '<li>'.&mt('New roles'). |
|
'<ul>'.$newmsg.'</ul>'. |
|
'</li>'; |
} |
} |
$changemsg .= '</ul></li>'; |
|
} |
} |
if (keys(%customprivchg) > 0) { |
if (keys(%customprivchg) > 0) { |
$changemsg .= '<li>'. |
my $privmsg; |
&mt('Custom roles with privilege changes'). |
|
'<ul>'; |
|
foreach my $item (sort(keys(%customprivchg))) { |
foreach my $item (sort(keys(%customprivchg))) { |
my $desc = &role_desc($item,$update,$refresh,$now); |
my $desc = &role_desc($item,$update,$refresh,$now); |
$changemsg .= '<li>'.$desc.'</li>'; |
if ($desc) { |
|
$privmsg .= '<li>'.$desc.'</li>'; |
|
} |
} |
} |
$changemsg .= '</ul></li>'; |
if ($privmsg) { |
|
$changemsg .= '<li>'. |
|
&mt('Custom roles with privilege changes'). |
|
'<ul>'.$privmsg.'</ul>'. |
|
'</li>'; |
|
} |
} |
} |
if (keys(%rolechange) > 0) { |
if (keys(%rolechange) > 0) { |
$changemsg .= '<li>'. |
my $rolemsg; |
&mt('Existing roles with status changes').'</li>'. |
|
'<ul>'; |
|
foreach my $item (sort(keys(%rolechange))) { |
foreach my $item (sort(keys(%rolechange))) { |
my $desc = &role_desc($item,$update,$refresh,$now); |
my $desc = &role_desc($item,$update,$refresh,$now); |
|
if ($desc) { |
|
$rolemsg .= '<li>'. |
|
&mt('[_1] status now: [_2].',$desc, |
|
$rolechange{$item}).'</li>'; |
|
} |
|
} |
|
if ($rolemsg) { |
$changemsg .= '<li>'. |
$changemsg .= '<li>'. |
&mt('[_1] status now: [_2].',$desc, |
&mt('Existing roles with status changes').'</li>'. |
$rolechange{$item}).'</li>'; |
'<ul>'.$rolemsg.'</ul>'. |
|
'</li>'; |
} |
} |
$changemsg .= '</ul></li>'; |
|
} |
} |
if (keys(%deletedroles) > 0) { |
if (keys(%deletedroles) > 0) { |
$changemsg .= '<li>'. |
my $delmsg; |
&mt('Existing roles now expired').'</li>'. |
|
'<ul>'; |
|
foreach my $item (sort(keys(%deletedroles))) { |
foreach my $item (sort(keys(%deletedroles))) { |
my $desc = &role_desc($item,$update,$refresh,$now); |
my $desc = &role_desc($item,$update,$refresh,$now); |
$changemsg .= '<li>'.$desc.'</li>'; |
if ($desc) { |
|
$delmsg .= '<li>'.$desc.'</li>'; |
|
} |
|
} |
|
if ($delmsg) { |
|
$changemsg .= '<li>'. |
|
&mt('Existing roles now expired').'</li>'. |
|
'<ul>'.$delmsg.'</ul>'. |
|
'</li>'; |
} |
} |
$changemsg .= '</ul></li>'; |
|
} |
} |
} |
} |
if ((keys(%changed_groups) > 0) || (keys(%groupchange) > 0)) { |
if ((keys(%changed_groups) > 0) || (keys(%groupchange) > 0)) { |
Line 2539 sub update_session_roles {
|
Line 2580 sub update_session_roles {
|
} |
} |
if ($changemsg) { |
if ($changemsg) { |
$msg .= '<ul>'.$changemsg.'</ul>'; |
$msg .= '<ul>'.$changemsg.'</ul>'; |
|
} else { |
|
if (&Apache::loncommon::show_course()) { |
|
$msg = &mt('No new courses or communities'); |
|
} else { |
|
$msg = &mt('No role changes'); |
|
} |
} |
} |
return $msg; |
return $msg; |
} |
} |
Line 2547 sub role_desc {
|
Line 2594 sub role_desc {
|
my ($item,$update,$refresh,$now) = @_; |
my ($item,$update,$refresh,$now) = @_; |
my ($where,$trolecode,$role,$tstatus,$tend,$tstart,$twhere, |
my ($where,$trolecode,$role,$tstatus,$tend,$tstart,$twhere, |
$trole,$tremark); |
$trole,$tremark); |
&Apache::lonnet::role_status('user.role.'.$item,$update,$refresh, $now,\$role,\$where, \$trolecode, |
&Apache::lonnet::role_status('user.role.'.$item,$update,$refresh, |
|
$now,\$role,\$where,\$trolecode, |
\$tstatus,\$tstart,\$tend); |
\$tstatus,\$tstart,\$tend); |
|
return unless ($role); |
if ($role =~ /^cr\//) { |
if ($role =~ /^cr\//) { |
my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role); |
my ($rdummy,$rdomain,$rauthor,$rrole)=split(/\//,$role); |
$tremark = &mt('Customrole defined by [_1].',$rauthor.':'.$rdomain); |
$tremark = &mt('Customrole defined by [_1].',$rauthor.':'.$rdomain); |
Line 2590 sub role_desc {
|
Line 2639 sub role_desc {
|
} elsif ($tdom) { |
} elsif ($tdom) { |
$twhere = &mt('Domain').': '.$tdom; |
$twhere = &mt('Domain').': '.$tdom; |
} |
} |
my $output = "$trole -- $twhere"; |
my $output; |
if ($tremark) { |
if ($trole) { |
$output .= '<br />'.$tremark; |
$output = $trole; |
|
if ($twhere) { |
|
$output .= " -- $twhere"; |
|
} |
|
if ($tremark) { |
|
$output .= '<br />'.$tremark; |
|
} |
} |
} |
return $output; |
return $output; |
} |
} |
Line 2678 sub get_roles_functions {
|
Line 2733 sub get_roles_functions {
|
} |
} |
if ($env{'user.adv'}) { |
if ($env{'user.adv'}) { |
if ($env{'form.display'} eq 'showall') { |
if ($env{'form.display'} eq 'showall') { |
push(@links,["javascript:rolesView('noshowall');",'edit-redo-22x22',&mt('Exclude expired roles')]); |
push(@links,["javascript:rolesView('noshowall');",'edit-redo-22x22',&mt('Exclude expired')]); |
} else { |
} else { |
push(@links,["javascript:rolesView('showall');",'edit-undo-22x22',&mt('Include expired roles')]); |
push(@links,["javascript:rolesView('showall');",'edit-undo-22x22',&mt('Include expired')]); |
} |
} |
} |
} |
|
if (&Apache::loncommon::designparm('login.coursecatalog',$env{'user.domain'})) { |
|
push(@links,['/adm/coursecatalog','ccat-22x22',&mt('Course Catalog')]); |
|
} |
my $funcs = &Apache::lonhtmlcommon::start_funclist(); |
my $funcs = &Apache::lonhtmlcommon::start_funclist(); |
foreach my $link (@links) { |
foreach my $link (@links) { |
$funcs .= &Apache::lonhtmlcommon::add_item_funclist( |
$funcs .= &Apache::lonhtmlcommon::add_item_funclist( |