version 1.426, 2016/12/26 18:43:52
|
version 1.427, 2017/01/01 14:08:34
|
Line 536 sub domainrole_req {
|
Line 536 sub domainrole_req {
|
&Apache::loncommon::end_data_table(); |
&Apache::loncommon::end_data_table(); |
} |
} |
|
|
sub domadhocroles { |
|
my ($ccuname,$ccdomain) = @_; |
|
my $confname = &Apache::lonnet::get_domainconfiguser($env{'request.role.domain'}); |
|
my %existing=&Apache::lonnet::dump('roles',$env{'request.role.domain'}, |
|
$confname,'rolesdef_'); |
|
my ($output,$canmodify); |
|
if (&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) { |
|
$canmodify = 1; |
|
} |
|
if (keys(%existing) > 0) { |
|
my @current; |
|
my $curradhoc = 'adhocroles.'.$env{'request.role.domain'}; |
|
my %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,$curradhoc); |
|
if ($userenv{$curradhoc}) { |
|
@current = split(/,/,$userenv{$curradhoc}); |
|
} |
|
if (!$canmodify && !@current) { |
|
return; |
|
} |
|
my %customroles; |
|
foreach my $key (keys(%existing)) { |
|
if ($key=~/^rolesdef\_(\w+)$/) { |
|
my $rolename = $1; |
|
my %privs; |
|
($privs{'system'},$privs{'domain'},$privs{'course'}) = split(/\_/,$existing{$key}); |
|
$customroles{$rolename} = \%privs; |
|
} |
|
} |
|
$output = '<br /><h3>'. |
|
&mt('Ad Hoc Course Roles Selectable via Helpdesk Role'). |
|
'</h3>'."\n". |
|
&Apache::loncommon::start_data_table(). |
|
&Apache::loncommon::start_data_table_header_row(); |
|
if ($canmodify) { |
|
$output .= '<th>'.&mt('Action').'</th>'; |
|
} |
|
$output .= '<th>'.&mt('Role').'</th>'. |
|
'<th>'.&mt('Privileges in Course').'<th>'. |
|
&Apache::loncommon::end_data_table_header_row(); |
|
foreach my $key (sort(keys(%customroles))) { |
|
next if ((!$canmodify) && (!grep(/^\Q$key\E$/,@current))); |
|
$output .= &Apache::loncommon::start_data_table_row(); |
|
if ($canmodify) { |
|
if (grep(/^\Q$key\E$/,@current)) { |
|
$output .= '<td><label>'. |
|
'<input type="checkbox" name="adhocroledel" value="'.$key.'" />'. |
|
&mt('Delete').'</label>'. |
|
'</td>'; |
|
} else { |
|
$output .= '<td><label>'. |
|
'<input type="checkbox" name="adhocroleadd" value="'.$key.'" />'. |
|
&mt('Add').'</label>'. |
|
'</td>'; |
|
} |
|
} |
|
$output .= '<td>'.$key.'</td><td>'; |
|
foreach my $level ('course','domain','system') { |
|
if ($customroles{$key}{$level}) { |
|
my $suffix; |
|
if (($level eq 'domain') || ($level eq 'system')) { |
|
$suffix = ' ('.&mt($level).')'; |
|
} |
|
my @privs = split(/:/,$customroles{$key}{$level}); |
|
foreach my $item (@privs) { |
|
next if ($item eq ''); |
|
my ($priv,$cond) = split(/\&/,$item); |
|
$output .= &Apache::lonnet::plaintext($priv,'Course').$suffix.'<br />'; |
|
} |
|
} |
|
} |
|
$output .= '</td>'. |
|
&Apache::loncommon::end_data_table_row(); |
|
} |
|
$output .= &Apache::loncommon::end_data_table(); |
|
} |
|
return $output; |
|
} |
|
|
|
sub courserequest_titles { |
sub courserequest_titles { |
my %titles = &Apache::lonlocal::texthash ( |
my %titles = &Apache::lonlocal::texthash ( |
official => 'Official', |
official => 'Official', |
Line 1363 ENDFORMINFO
|
Line 1285 ENDFORMINFO
|
} |
} |
my $title = ''; |
my $title = ''; |
if ($newuser) { |
if ($newuser) { |
my ($portfolioform,$domroleform,$adhocroleform); |
my ($portfolioform,$domroleform); |
if ((&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) || |
if ((&Apache::lonnet::allowed('mpq',$env{'request.role.domain'})) || |
(&Apache::lonnet::allowed('mut',$env{'request.role.domain'}))) { |
(&Apache::lonnet::allowed('mut',$env{'request.role.domain'}))) { |
# Current user has quota or user tools modification privileges |
# Current user has quota or user tools modification privileges |
Line 1373 ENDFORMINFO
|
Line 1295 ENDFORMINFO
|
($ccdomain eq $env{'request.role.domain'})) { |
($ccdomain eq $env{'request.role.domain'})) { |
$domroleform = '<br />'.&domainrole_req($ccuname,$ccdomain); |
$domroleform = '<br />'.&domainrole_req($ccuname,$ccdomain); |
} |
} |
if (&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) { |
|
$adhocroleform = &domadhocroles($ccuname,$ccdomain); |
|
if ($adhocroleform) { |
|
$adhocroleform = '<br />'.$adhocroleform; |
|
} |
|
} |
|
&initialize_authen_forms($ccdomain,$formname); |
&initialize_authen_forms($ccdomain,$formname); |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'lg' => 'Login Data', |
'lg' => 'Login Data', |
Line 1489 ENDAUTH
|
Line 1405 ENDAUTH
|
} else { |
} else { |
$r->print(&Apache::lonuserutils::set_login($ccdomain,$authformkrb,$authformint,$authformloc)); |
$r->print(&Apache::lonuserutils::set_login($ccdomain,$authformkrb,$authformint,$authformloc)); |
} |
} |
$r->print($portfolioform.$domroleform.$adhocroleform); |
$r->print($portfolioform.$domroleform); |
if ($env{'form.action'} eq 'singlestudent') { |
if ($env{'form.action'} eq 'singlestudent') { |
$r->print(&date_sections_select($context,$newuser,$formname, |
$r->print(&date_sections_select($context,$newuser,$formname, |
$permission,$crstype,$ccuname, |
$permission,$crstype,$ccuname, |
Line 1532 ENDAUTH
|
Line 1448 ENDAUTH
|
$r->print(&Apache::loncommon::end_data_table()); |
$r->print(&Apache::loncommon::end_data_table()); |
} |
} |
$r->print('</div>'); |
$r->print('</div>'); |
my @order = ('auth','quota','tools','requestauthor','adhocroles'); |
my @order = ('auth','quota','tools','requestauthor'); |
my %user_text; |
my %user_text; |
my ($isadv,$isauthor) = |
my ($isadv,$isauthor) = |
&Apache::lonnet::is_advanced_user($ccdomain,$ccuname); |
&Apache::lonnet::is_advanced_user($ccdomain,$ccuname); |
Line 1542 ENDAUTH
|
Line 1458 ENDAUTH
|
($env{'request.role.domain'} eq $ccdomain)) { |
($env{'request.role.domain'} eq $ccdomain)) { |
$user_text{'requestauthor'} = &domainrole_req($ccuname,$ccdomain); |
$user_text{'requestauthor'} = &domainrole_req($ccuname,$ccdomain); |
} |
} |
if ((&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) || |
|
(&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) { |
|
$user_text{'adhocroles'} = &domadhocroles($ccuname,$ccdomain); |
|
} |
|
$user_text{'auth'} = &user_authentication($ccuname,$ccdomain,$formname); |
$user_text{'auth'} = &user_authentication($ccuname,$ccdomain,$formname); |
if ((&Apache::lonnet::allowed('mpq',$ccdomain)) || |
if ((&Apache::lonnet::allowed('mpq',$ccdomain)) || |
(&Apache::lonnet::allowed('mut',$ccdomain)) || |
(&Apache::lonnet::allowed('mut',$ccdomain)) || |
Line 2931 sub update_user_data {
|
Line 2843 sub update_user_data {
|
$newcustom{'requestauthor'}, |
$newcustom{'requestauthor'}, |
\%changeHash,'requestauthor'); |
\%changeHash,'requestauthor'); |
} |
} |
if (&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) { |
|
my @adds = &Apache::loncommon::get_env_multiple('form.adhocroleadd'); |
|
if (&adhocrole_changes(\%changeHash)) { |
|
$changed{'adhocroles.'.$env{'request.role.domain'}} = $changeHash{'adhocroles.'.$env{'request.role.domain'}}; |
|
} |
|
} |
|
} |
} |
if ($canmodify_status{'inststatus'}) { |
if ($canmodify_status{'inststatus'}) { |
if (exists($env{'form.inststatus'})) { |
if (exists($env{'form.inststatus'})) { |
Line 3000 sub update_user_data {
|
Line 2906 sub update_user_data {
|
'requestcourses.community','requestcourses.textbook', |
'requestcourses.community','requestcourses.textbook', |
'reqcrsotherdom.official','reqcrsotherdom.unofficial', |
'reqcrsotherdom.official','reqcrsotherdom.unofficial', |
'reqcrsotherdom.community','reqcrsotherdom.textbook', |
'reqcrsotherdom.community','reqcrsotherdom.textbook', |
'reqcrsotherdom.placement','requestauthor', |
'reqcrsotherdom.placement','requestauthor'], |
'adhocroles.'.$env{'request.role.domain'}], |
|
$env{'form.ccdomain'},$env{'form.ccuname'}); |
$env{'form.ccdomain'},$env{'form.ccuname'}); |
my ($tmp) = keys(%userenv); |
my ($tmp) = keys(%userenv); |
if ($tmp =~ /^(con_lost|error)/i) { |
if ($tmp =~ /^(con_lost|error)/i) { |
Line 3140 sub update_user_data {
|
Line 3045 sub update_user_data {
|
&Apache::loncommon::default_quota($env{'form.ccdomain'},$oldinststatus,$name); |
&Apache::loncommon::default_quota($env{'form.ccdomain'},$oldinststatus,$name); |
($newdefquota{$name},$newsettingstatus{$name}) = ($olddefquota{$name},$oldsettingstatus{$name}); |
($newdefquota{$name},$newsettingstatus{$name}) = ($olddefquota{$name},$oldsettingstatus{$name}); |
} |
} |
push(@disporder,'adhocroles'); |
|
my %canshow; |
my %canshow; |
if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) { |
if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) { |
$canshow{'quota'} = 1; |
$canshow{'quota'} = 1; |
Line 3159 sub update_user_data {
|
Line 3063 sub update_user_data {
|
if (&Apache::lonnet::allowed('cau',$env{'form.ccdomain'})) { |
if (&Apache::lonnet::allowed('cau',$env{'form.ccdomain'})) { |
$canshow{'requestauthor'} = 1; |
$canshow{'requestauthor'} = 1; |
} |
} |
if (&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) { |
|
$canshow{'adhocroles'} = 1; |
|
} |
|
my (%changeHash,%changed); |
my (%changeHash,%changed); |
if ($oldinststatus eq '') { |
if ($oldinststatus eq '') { |
$oldsettings{'inststatus'} = $othertitle; |
$oldsettings{'inststatus'} = $othertitle; |
Line 3275 sub update_user_data {
|
Line 3176 sub update_user_data {
|
&tool_changes('reqcrsotherdom',\@requestcourses,\%oldsettings,\%oldsettingstext, |
&tool_changes('reqcrsotherdom',\@requestcourses,\%oldsettings,\%oldsettingstext, |
\%userenv,\%changeHash,\%changed,\%newsettings,\%newsettingstext); |
\%userenv,\%changeHash,\%changed,\%newsettings,\%newsettingstext); |
} |
} |
if ($userenv{'adhocroles.'.$env{'request.role.domain'}}) { |
|
$changeHash{'adhocroles.'.$env{'request.role.domain'}} = $userenv{'adhocroles.'.$env{'request.role.domain'}}; |
|
} |
|
if (&adhocrole_changes(\%changeHash,\%userenv)) { |
|
$changed{'adhocroles'} = 1; |
|
$oldsettings{'adhocroles'} = $userenv{'adhocroles.'.$env{'request.role.domain'}}; |
|
$newsettings{'adhocroles'} = $changeHash{'adhocroles.'.$env{'request.role.domain'}}; |
|
} |
|
} |
} |
foreach my $item (@userinfo) { |
foreach my $item (@userinfo) { |
if ($env{'form.c'.$item} ne $userenv{$item}) { |
if ($env{'form.c'.$item} ne $userenv{$item}) { |
Line 3325 sub update_user_data {
|
Line 3218 sub update_user_data {
|
&Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, |
&Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, |
$key,'reload','requestauthor'); |
$key,'reload','requestauthor'); |
} |
} |
} elsif ($key eq 'adhocroles') { |
|
$newenvhash{'adhocroles.'.$env{'request.role.domain'}} = |
|
$changeHash{'adhocroles.'.$env{'request.role.domain'}}; |
|
} elsif ($key ne 'quota') { |
} elsif ($key ne 'quota') { |
$newenvhash{'environment.tools.'.$key} = |
$newenvhash{'environment.tools.'.$key} = |
$changeHash{'tools.'.$key}; |
$changeHash{'tools.'.$key}; |
Line 3520 sub display_userinfo {
|
Line 3410 sub display_userinfo {
|
'textbook' => 'Can Request Textbook Courses', |
'textbook' => 'Can Request Textbook Courses', |
'placement' => 'Can Request Placement Tests', |
'placement' => 'Can Request Placement Tests', |
'requestauthor' => 'Can Request Author Role', |
'requestauthor' => 'Can Request Author Role', |
'adhocroles' => 'Ad Hoc Roles Selectable via Helpdesk Role', |
|
'inststatus' => "Affiliation", |
'inststatus' => "Affiliation", |
'prvs' => 'Previous Value:', |
'prvs' => 'Previous Value:', |
'chto' => 'Changed To:' |
'chto' => 'Changed To:' |
Line 3886 sub tool_changes {
|
Line 3775 sub tool_changes {
|
return; |
return; |
} |
} |
|
|
sub adhocrole_changes { |
|
my ($changehashref,$userenv) = @_; |
|
my @adds = &Apache::loncommon::get_env_multiple('form.adhocroleadd'); |
|
my @dels = &Apache::loncommon::get_env_multiple('form.adhocroledel'); |
|
my (@saved,@added,@alladhoc,$changed); |
|
my $adhoc_key = 'adhocroles.'.$env{'request.role.domain'}; |
|
if (!$env{'form.makeuser'}) { |
|
if (ref($userenv) eq 'HASH') { |
|
my @current; |
|
if ($userenv->{$adhoc_key}) { |
|
@current = split(/,/,$userenv->{$adhoc_key}); |
|
if (@dels) { |
|
foreach my $curr (@current) { |
|
next if ($curr eq ''); |
|
unless (grep(/\Q$curr\E$/,@dels)) { |
|
push(@saved,$curr); |
|
} |
|
} |
|
$changed = 1; |
|
} else { |
|
@saved = @current; |
|
} |
|
} |
|
} |
|
} |
|
if (@adds) { |
|
my $confname = &Apache::lonnet::get_domainconfiguser($env{'request.role.domain'}); |
|
my %existing=&Apache::lonnet::dump('roles',$env{'request.role.domain'}, |
|
$confname,'rolesdef_'); |
|
foreach my $poss (@adds) { |
|
if (exists($existing{'rolesdef_'.$poss})) { |
|
push(@added,$poss); |
|
$changed = 1; |
|
} |
|
} |
|
} |
|
if (@added) { |
|
if (@saved) { |
|
foreach my $add (@added) { |
|
unless (grep(/^\Q$add\E$/,@saved)) { |
|
push(@alladhoc,$add); |
|
} |
|
} |
|
} else { |
|
push(@alladhoc,@added); |
|
} |
|
} |
|
if (@saved) { |
|
push(@alladhoc,@saved); |
|
} |
|
if (@alladhoc) { |
|
my $adhocstr = join(',',sort(@alladhoc)); |
|
$changehashref->{$adhoc_key} = $adhocstr; |
|
} elsif (@dels) { |
|
&Apache::lonnet::del('environment',[$adhoc_key],$env{'form.ccdomain'},$env{'form.ccuname'}); |
|
delete($changehashref->{$adhoc_key}); |
|
if (($env{'form.ccdomain'} eq $env{'user.domain'}) && |
|
($env{'form.ccuname'} eq $env{'user.name'})) { |
|
&Apache::lonnet::delenv($adhoc_key); |
|
} |
|
} |
|
return $changed; |
|
} |
|
|
|
sub update_roles { |
sub update_roles { |
my ($r,$context,$showcredits) = @_; |
my ($r,$context,$showcredits) = @_; |
my $now=time; |
my $now=time; |