version 1.269.2.26, 2016/08/13 21:17:38
|
version 1.269.2.27, 2016/10/23 18:30:32
|
Line 260 sub handler {
|
Line 260 sub handler {
|
|
|
my $envkey; |
my $envkey; |
my %dcroles = (); |
my %dcroles = (); |
my $numdc = &check_fordc(\%dcroles,$update,$then); |
my %dhroles = (); |
|
my ($numdc,$numdh,$numadhoc) = &check_for_adhoc(\%dcroles,\%dhroles,$update,$then); |
my $loncaparev = $r->dir_config('lonVersion'); |
my $loncaparev = $r->dir_config('lonVersion'); |
|
|
# ================================================================== Roles Init |
# ================================================================== Roles Init |
Line 269 sub handler {
|
Line 270 sub handler {
|
my $locknum=&Apache::lonnet::get_locks(); |
my $locknum=&Apache::lonnet::get_locks(); |
if ($locknum) { return 409; } |
if ($locknum) { return 409; } |
|
|
|
my $custom_adhoc; |
if ($env{'form.newrole'}) { |
if ($env{'form.newrole'}) { |
$env{'form.'.$env{'form.newrole'}}=1; |
$env{'form.'.$env{'form.newrole'}}=1; |
|
# Check if this is a Domain Helpdesk role trying to enter a course |
|
if ($env{'form.newrole'} =~ m{^cr/($match_domain)/\1\-domainconfig/\w+\./\1/$match_courseid$}) { |
|
if ($dhroles{$1}) { |
|
$custom_adhoc = 1; |
|
} |
|
} |
} |
} |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
# Check if user is CC trying to select a course role |
# Check if user is CC trying to select a course role |
Line 301 sub handler {
|
Line 309 sub handler {
|
"request.role" => 'cm', |
"request.role" => 'cm', |
"request.role.adv" => $env{'user.adv'}, |
"request.role.adv" => $env{'user.adv'}, |
"request.role.domain" => $env{'user.domain'}}); |
"request.role.domain" => $env{'user.domain'}}); |
|
# Check if Domain Helpdesk role trying to enter a course needs privs to be created |
|
if ($env{'form.newrole'} =~ m{^cr/($match_domain)/\1\-domainconfig/(\w+)\./\1/($match_courseid)$}) { |
|
my $cdom = $1; |
|
my $rolename = $2; |
|
my $cnum = $3; |
|
if ($custom_adhoc) { |
|
my %adhocroles = &Apache::lonnet::userenvironment($env{'user.domain'},$env{'user.name'}, |
|
'adhocroles.'.$cdom); |
|
if (keys(%adhocroles)) { |
|
my @adhoc = split(',',$adhocroles{'adhocroles.'.$cdom}); |
|
if (grep(/^\Q$rolename\E$/,@adhoc)) { |
|
if (&Apache::lonnet::check_adhoc_privs($cdom,$cnum,$update,$refresh,$now, |
|
"cr/$cdom/$cdom".'-domainconfig/'.$rolename)) { |
|
&Apache::lonnet::appenv({"environment.internal.$cdom.$cnum.cr/$cdom/$cdom".'-domainconfig/'."$rolename.adhoc" => time}); |
|
} |
|
} |
|
} |
|
} |
|
} elsif ($numdc > 0) { |
# Check if user is a DC trying to enter a course or author space and needs privs to be created |
# 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)) { |
foreach my $envkey (keys(%env)) { |
# Is this an ad-hoc Coordinator role? |
# Is this an ad-hoc Coordinator role? |
if (my ($ccrole,$domain,$coursenum) = |
if (my ($ccrole,$domain,$coursenum) = |
Line 710 ENDENTERKEY
|
Line 736 ENDENTERKEY
|
$redirect_url); |
$redirect_url); |
return OK; |
return OK; |
} |
} |
|
if ($role eq 'dh') { |
|
my $redirect_url = '/adm/menu/'; |
|
&redirect_user($r,&mt('Loading Domain Helpdesk Menu'), |
|
$redirect_url); |
|
return OK; |
|
} |
if ($role eq 'sc') { |
if ($role eq 'sc') { |
my $redirect_url = '/adm/grades?command=scantronupload'; |
my $redirect_url = '/adm/grades?command=scantronupload'; |
&redirect_user($r,&mt('Loading Data Upload Page'), |
&redirect_user($r,&mt('Loading Data Upload Page'), |
Line 957 ENDHEADER
|
Line 989 ENDHEADER
|
} |
} |
# ----------------------------------------------------------------------- Table |
# ----------------------------------------------------------------------- Table |
|
|
if ($numdc > 0) { |
if (($numdc > 0) || (($numdh > 0) && ($numadhoc > 0))) { |
$r->print(&coursepick_jscript()); |
$r->print(&coursepick_jscript()); |
$r->print(&Apache::loncommon::coursebrowser_javascript(). |
$r->print(&Apache::loncommon::coursebrowser_javascript(). |
&Apache::loncommon::authorbrowser_javascript()); |
&Apache::loncommon::authorbrowser_javascript()); |
Line 990 ENDHEADER
|
Line 1022 ENDHEADER
|
$roletext{'user.role.'.$role}->[1]. |
$roletext{'user.role.'.$role}->[1]. |
&Apache::loncommon::end_data_table_row(); |
&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 ($role =~ m{^dh\./($match_domain)/$} |
|
&& ($env{'environment.adhocroles.'.$1} ne '')) { |
|
$output .= &adhoc_customroles_row($1,'recent'); |
} |
} |
} elsif ($numdc > 0) { |
} elsif ($numdc > 0) { |
unless ($role =~/^error\:/) { |
unless ($role =~/^error\:/) { |
Line 1383 sub print_rolerows {
|
Line 1418 sub print_rolerows {
|
&Apache::loncommon::end_data_table_row(); |
&Apache::loncommon::end_data_table_row(); |
} |
} |
} |
} |
if ($sortrole->{$which} =~ m-dc\./($match_domain)/-) { |
if ($sortrole->{$which} =~ m{^user\.role\.dc\./($match_domain)/}) { |
if (ref($dcroles) eq 'HASH') { |
if (ref($dcroles) eq 'HASH') { |
if ($dcroles->{$1}) { |
if ($dcroles->{$1}) { |
$output .= &adhoc_roles_row($1,''); |
$output .= &adhoc_roles_row($1,''); |
} |
} |
} |
} |
|
} elsif (($sortrole->{$which} =~ m{^user\.role\.dh\./($match_domain)/}) && |
|
($env{'environment.adhocroles.'.$1} ne '')) { |
|
$output .= &adhoc_customroles_row($1,''); |
} |
} |
} |
} |
} |
} |
Line 1645 sub check_author_homeserver {
|
Line 1683 sub check_author_homeserver {
|
} |
} |
} |
} |
|
|
sub check_fordc { |
sub check_for_adhoc { |
my ($dcroles,$update,$then) = @_; |
my ($dcroles,$dhroles,$update,$then) = @_; |
my $numdc = 0; |
my $numdc = 0; |
|
my $numdh = 0; |
|
my $numadhoc = 0; |
|
my $num_custom_adhoc = 0; |
if ($env{'user.adv'}) { |
if ($env{'user.adv'}) { |
foreach my $envkey (sort(keys(%env))) { |
foreach my $envkey (sort(keys(%env))) { |
if ($envkey=~/^user\.role\.dc\.\/($match_domain)\/$/) { |
if ($envkey=~/^user\.role\.(dc|dh)\.\/($match_domain)\/$/) { |
my $dcdom = $1; |
my $role = $1; |
my $livedc = 1; |
my $roledom = $2; |
|
my $liverole = 1; |
my ($tstart,$tend)=split(/\./,$env{$envkey}); |
my ($tstart,$tend)=split(/\./,$env{$envkey}); |
my $limit = $update; |
my $limit = $update; |
if ($env{'request.role'} eq 'dc./'.$dcdom.'/') { |
if ((($role eq 'dc') && ($env{'request.role'} eq 'dc./'.$roledom.'/')) || |
|
(($role eq 'dh') && ($env{'request.role'} eq 'dh./'.$roledom.'/'))) { |
$limit = $then; |
$limit = $then; |
} |
} |
if ($tstart && $tstart>$limit) { $livedc = 0; } |
if ($tstart && $tstart>$limit) { $liverole = 0; } |
if ($tend && $tend <$limit) { $livedc = 0; } |
if ($tend && $tend <$limit) { $liverole = 0; } |
if ($livedc) { |
if ($liverole) { |
$$dcroles{$dcdom} = $envkey; |
if ($role eq 'dc') { |
$numdc++; |
$dcroles->{$roledom} = $envkey; |
|
$numdc++; |
|
} else { |
|
$dhroles->{$roledom} = $envkey; |
|
if ($env{'environment.adhocroles.'.$roledom} ne '') { |
|
$numadhoc ++; |
|
} |
|
$numdh++; |
|
} |
} |
} |
} |
} |
} |
} |
} |
} |
return $numdc; |
return ($numdc,$numdh,$numadhoc); |
} |
} |
|
|
sub adhoc_course_role { |
sub adhoc_course_role { |
Line 1759 sub check_forcc {
|
Line 1810 sub check_forcc {
|
} |
} |
|
|
sub courselink { |
sub courselink { |
my ($dcdom,$rowtype) = @_; |
my ($roledom,$rowtype,$role) = @_; |
my $courseform=&Apache::loncommon::selectcourse_link |
my $courseform=&Apache::loncommon::selectcourse_link |
('rolechoice','dccourse'.$rowtype.'_'.$dcdom, |
('rolechoice','course'.$rowtype.'_'.$roledom.'_'.$role, |
'dcdomain'.$rowtype.'_'.$dcdom,'coursedesc'.$rowtype.'_'. |
'domain'.$rowtype.'_'.$roledom.'_'.$role, |
$dcdom,$dcdom,undef,'Course/Community'); |
'coursedesc'.$rowtype.'_'.$roledom.'_'.$role, |
my $hiddenitems = '<input type="hidden" name="dcdomain'.$rowtype.'_'.$dcdom.'" value="'.$dcdom.'" />'. |
$roledom.':'.$role,undef,'Course/Community'); |
'<input type="hidden" name="origdom'.$rowtype.'_'.$dcdom.'" value="'.$dcdom.'" />'. |
my $hiddenitems = '<input type="hidden" name="domain'.$rowtype.'_'.$roledom.'_'.$role.'" value="'.$roledom.'" />'. |
'<input type="hidden" name="dccourse'.$rowtype.'_'.$dcdom.'" value="" />'. |
'<input type="hidden" name="origdom'.$rowtype.'_'.$roledom.'_'.$role.'" value="'.$roledom.'" />'. |
'<input type="hidden" name="coursedesc'.$rowtype.'_'.$dcdom.'" value="" />'; |
'<input type="hidden" name="course'.$rowtype.'_'.$roledom.'_'.$role.'" value="" />'. |
|
'<input type="hidden" name="coursedesc'.$rowtype.'_'.$roledom.'_'.$role.'" value="" />'; |
return $courseform.$hiddenitems; |
return $courseform.$hiddenitems; |
} |
} |
|
|
Line 1862 sub adhoc_roles_row {
|
Line 1914 sub adhoc_roles_row {
|
.&mt('[_1]Ad hoc[_2] roles in domain [_3] --' |
.&mt('[_1]Ad hoc[_2] roles in domain [_3] --' |
,'<span class="LC_cusr_emph">','</span>',$dcdom) |
,'<span class="LC_cusr_emph">','</span>',$dcdom) |
.' '; |
.' '; |
my $selectcclink = &courselink($dcdom,$rowtype); |
my $role = 'cc'; |
|
my $selectcclink = &courselink($dcdom,$rowtype,$role); |
my $ccrole = &Apache::lonnet::plaintext('co',undef,undef,1); |
my $ccrole = &Apache::lonnet::plaintext('co',undef,undef,1); |
my $carole = &Apache::lonnet::plaintext('ca'); |
my $carole = &Apache::lonnet::plaintext('ca'); |
my $selectcalink = &coauthorlink($dcdom,$rowtype); |
my $selectcalink = &coauthorlink($dcdom,$rowtype); |
Line 1872 sub adhoc_roles_row {
|
Line 1925 sub adhoc_roles_row {
|
return $output; |
return $output; |
} |
} |
|
|
|
sub adhoc_customroles_row { |
|
my ($dhdom,$rowtype) = @_; |
|
my $output = &Apache::loncommon::continue_data_table_row() |
|
.' <td colspan="5" class="LC_textsize_mobile">' |
|
.&mt('[_1]Ad hoc[_2] course/community roles in domain [_3] --', |
|
'<span class="LC_cusr_emph">','</span>',$dhdom); |
|
my @customroles = split(/,/,$env{'environment.adhocroles.'.$dhdom}); |
|
my $count = 0; |
|
foreach my $role (@customroles) { |
|
next if (($role eq '') || ($role =~ /\W/)); |
|
$output .= ' '.$role.': '.&courselink($dhdom,$rowtype,$role).' |'; |
|
$count ++; |
|
} |
|
if ($count) { |
|
return $output; |
|
} |
|
return; |
|
} |
|
|
sub recent_filename { |
sub recent_filename { |
my $area=shift; |
my $area=shift; |
return 'nohist_recent_'.&escape($area); |
return 'nohist_recent_'.&escape($area); |