version 1.160.6.84.2.9, 2017/11/16 23:33:05
|
version 1.314, 2017/10/07 00:50:47
|
Line 104 $datatable - HTML containing form eleme
|
Line 104 $datatable - HTML containing form eleme
|
|
|
In the case of course requests, radio buttons are displayed for each institutional |
In the case of course requests, radio buttons are displayed for each institutional |
affiliate type (and also default, and _LC_adv) for each of the course types |
affiliate type (and also default, and _LC_adv) for each of the course types |
(official, unofficial, community, and textbook). In each case the radio buttons |
(official, unofficial, community, textbook, and placement). |
allow the selection of one of four values: |
In each case the radio buttons allow the selection of one of four values: |
|
|
0, approval, validate, autolimit=N (where N is blank, or a positive integer). |
0, approval, validate, autolimit=N (where N is blank, or a positive integer). |
which have the following effects: |
which have the following effects: |
Line 170 use Apache::loncoursequeueadmin();
|
Line 170 use Apache::loncoursequeueadmin();
|
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA::Enrollment; |
use LONCAPA::Enrollment; |
use LONCAPA::lonauthcgi(); |
use LONCAPA::lonauthcgi(); |
|
use LONCAPA::SSL; |
use File::Copy; |
use File::Copy; |
use Locale::Language; |
use Locale::Language; |
use DateTime::TimeZone; |
use DateTime::TimeZone; |
use DateTime::Locale; |
use DateTime::Locale; |
|
use Time::HiRes qw( sleep ); |
|
|
my $registered_cleanup; |
my $registered_cleanup; |
my $modified_urls; |
my $modified_urls; |
Line 217 sub handler {
|
Line 219 sub handler {
|
'serverstatuses','requestcourses','helpsettings', |
'serverstatuses','requestcourses','helpsettings', |
'coursedefaults','usersessions','loadbalancing', |
'coursedefaults','usersessions','loadbalancing', |
'requestauthor','selfenrollment','inststatus', |
'requestauthor','selfenrollment','inststatus', |
'ltitools'],$dom); |
'ltitools','ssl','trust'],$dom); |
if (ref($domconfig{'ltitools'}) eq 'HASH') { |
if (ref($domconfig{'ltitools'}) eq 'HASH') { |
my %encconfig = |
my %encconfig = |
&Apache::lonnet::get_dom('encconfig',['ltitools'],$dom); |
&Apache::lonnet::get_dom('encconfig',['ltitools'],$dom); |
Line 236 sub handler {
|
Line 238 sub handler {
|
'usercreation','selfcreation','usermodification','scantron', |
'usercreation','selfcreation','usermodification','scantron', |
'requestcourses','requestauthor','coursecategories', |
'requestcourses','requestauthor','coursecategories', |
'serverstatuses','helpsettings','coursedefaults', |
'serverstatuses','helpsettings','coursedefaults', |
'ltitools','selfenrollment','usersessions'); |
'ltitools','selfenrollment','usersessions','ssl','trust'); |
my %existing; |
my %existing; |
if (ref($domconfig{'loadbalancing'}) eq 'HASH') { |
if (ref($domconfig{'loadbalancing'}) eq 'HASH') { |
%existing = %{$domconfig{'loadbalancing'}}; |
%existing = %{$domconfig{'loadbalancing'}}; |
Line 279 sub handler {
|
Line 281 sub handler {
|
{col1 => 'Internal Authentication', |
{col1 => 'Internal Authentication', |
col2 => 'Value'}, |
col2 => 'Value'}, |
{col1 => 'Institutional user types', |
{col1 => 'Institutional user types', |
col2 => 'Assignable to e-mail usernames'}], |
col2 => 'Name displayed'}], |
print => \&print_defaults, |
print => \&print_defaults, |
modify => \&modify_defaults, |
modify => \&modify_defaults, |
}, |
}, |
Line 361 sub handler {
|
Line 363 sub handler {
|
col2 => 'Enabled?'}, |
col2 => 'Enabled?'}, |
{col1 => 'Institutional user type (login/SSO self-creation)', |
{col1 => 'Institutional user type (login/SSO self-creation)', |
col2 => 'Information user can enter'}, |
col2 => 'Information user can enter'}, |
{col1 => 'Self-creation with e-mail as username', |
{col1 => 'Self-creation with e-mail verification', |
col2 => 'Settings'}], |
col2 => 'Settings'}], |
print => \&print_selfcreation, |
print => \&print_selfcreation, |
modify => \&modify_selfcreation, |
modify => \&modify_selfcreation, |
Line 466 sub handler {
|
Line 468 sub handler {
|
print => \&print_selfenrollment, |
print => \&print_selfenrollment, |
modify => \&modify_selfenrollment, |
modify => \&modify_selfenrollment, |
}, |
}, |
|
'privacy' => |
|
{text => 'User Privacy', |
|
help => 'Domain_Configuration_User_Privacy', |
|
header => [{col1 => 'Setting', |
|
col2 => 'Value',}], |
|
print => \&print_privacy, |
|
modify => \&modify_privacy, |
|
}, |
'usersessions' => |
'usersessions' => |
{text => 'User session hosting/offloading', |
{text => 'User session hosting/offloading', |
help => 'Domain_Configuration_User_Sessions', |
help => 'Domain_Configuration_User_Sessions', |
Line 489 sub handler {
|
Line 499 sub handler {
|
print => \&print_loadbalancing, |
print => \&print_loadbalancing, |
modify => \&modify_loadbalancing, |
modify => \&modify_loadbalancing, |
}, |
}, |
'ltitools' => |
'ltitools' => |
{text => 'External Tools (LTI)', |
{text => 'External Tools (LTI)', |
help => 'Domain_Configuration_LTI_Tools', |
help => 'Domain_Configuration_LTI_Tools', |
header => [{col1 => 'Setting', |
header => [{col1 => 'Setting', |
Line 497 sub handler {
|
Line 507 sub handler {
|
print => \&print_ltitools, |
print => \&print_ltitools, |
modify => \&modify_ltitools, |
modify => \&modify_ltitools, |
}, |
}, |
|
'ssl' => |
|
{text => 'LON-CAPA Network (SSL)', |
|
help => 'Domain_Configuration_Network_SSL', |
|
header => [{col1 => 'Server', |
|
col2 => 'Certificate Status'}, |
|
{col1 => 'Connections to other servers', |
|
col2 => 'Rules'}, |
|
{col1 => 'Connections from other servers', |
|
col2 => 'Rules'}, |
|
{col1 => "Replicating domain's published content", |
|
col2 => 'Rules'}], |
|
print => \&print_ssl, |
|
modify => \&modify_ssl, |
|
}, |
|
'trust' => |
|
{text => 'Trust Settings', |
|
help => 'Domain_Configuration_Trust', |
|
header => [{col1 => "Access to this domain's content by others", |
|
col2 => 'Rules'}, |
|
{col1 => "Access to other domain's content by this domain", |
|
col2 => 'Rules'}, |
|
{col1 => "Enrollment in this domain's courses by others", |
|
col2 => 'Rules',}, |
|
{col1 => "Co-author roles in this domain for others", |
|
col2 => 'Rules',}, |
|
{col1 => "Co-author roles for this domain's users elsewhere", |
|
col2 => 'Rules',}, |
|
{col1 => "Domain roles in this domain assignable to others", |
|
col2 => 'Rules'}, |
|
{col1 => "Course catalog for this domain displayed elsewhere", |
|
col2 => 'Rules'}, |
|
{col1 => "Requests for creation of courses in this domain by others", |
|
col2 => 'Rules'}, |
|
{col1 => "Users in other domains can send messages to this domain", |
|
col2 => 'Rules'},], |
|
print => \&print_trust, |
|
modify => \&modify_trust, |
|
}, |
); |
); |
if (keys(%servers) > 1) { |
if (keys(%servers) > 1) { |
$prefs{'login'} = { text => 'Log-in page options', |
$prefs{'login'} = { text => 'Log-in page options', |
Line 550 $javascript_validations
|
Line 598 $javascript_validations
|
$coursebrowserjs |
$coursebrowserjs |
END |
END |
} |
} |
|
if (grep(/^selfcreation$/,@actions)) { |
|
$js .= &selfcreate_javascript(); |
|
} |
if (grep(/^contacts$/,@actions)) { |
if (grep(/^contacts$/,@actions)) { |
$js .= &contacts_javascript(); |
$js .= &contacts_javascript(); |
} |
} |
Line 646 sub process_changes {
|
Line 697 sub process_changes {
|
} elsif ($action eq 'usercreation') { |
} elsif ($action eq 'usercreation') { |
$output = &modify_usercreation($dom,%domconfig); |
$output = &modify_usercreation($dom,%domconfig); |
} elsif ($action eq 'selfcreation') { |
} elsif ($action eq 'selfcreation') { |
$output = &modify_selfcreation($dom,%domconfig); |
$output = &modify_selfcreation($dom,$lastactref,%domconfig); |
} elsif ($action eq 'usermodification') { |
} elsif ($action eq 'usermodification') { |
$output = &modify_usermodification($dom,%domconfig); |
$output = &modify_usermodification($dom,%domconfig); |
} elsif ($action eq 'contacts') { |
} elsif ($action eq 'contacts') { |
Line 675 sub process_changes {
|
Line 726 sub process_changes {
|
$output = &modify_loadbalancing($dom,%domconfig); |
$output = &modify_loadbalancing($dom,%domconfig); |
} elsif ($action eq 'ltitools') { |
} elsif ($action eq 'ltitools') { |
$output = &modify_ltitools($r,$dom,$action,$lastactref,%domconfig); |
$output = &modify_ltitools($r,$dom,$action,$lastactref,%domconfig); |
|
} elsif ($action eq 'ssl') { |
|
$output = &modify_ssl($dom,$lastactref,%domconfig); |
|
} elsif ($action eq 'trust') { |
|
$output = &modify_trust($dom,$lastactref,%domconfig); |
} |
} |
return $output; |
return $output; |
} |
} |
Line 701 sub print_config_box {
|
Line 756 sub print_config_box {
|
&Apache::lonuserutils::custom_role_privs(\%privs,\%full,\%levels,\%levelscurrent); |
&Apache::lonuserutils::custom_role_privs(\%privs,\%full,\%levels,\%levelscurrent); |
my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); |
my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); |
$output = |
$output = |
&Apache::lonuserutils::custom_roledefs_js($context,$crstype,$formname,\%full, |
&Apache::lonuserutils::custom_roledefs_js($context,$crstype,$formname,\%full, |
\@templateroles); |
\@templateroles); |
} |
} |
$output .= |
$output .= |
'<table class="LC_nested_outer"> |
'<table class="LC_nested_outer"> |
<tr> |
<tr> |
<th align="left" valign="middle"><span class="LC_nobreak">'. |
<th class="LC_left_item LC_middle"><span class="LC_nobreak">'. |
&mt($item->{text}).' '. |
&mt($item->{text}).' '. |
&Apache::loncommon::help_open_topic($item->{'help'}).'</span></th>'."\n". |
&Apache::loncommon::help_open_topic($item->{'help'}).'</span></th>'."\n". |
'</tr>'; |
'</tr>'; |
Line 738 sub print_config_box {
|
Line 793 sub print_config_box {
|
$rowtotal ++; |
$rowtotal ++; |
if (($action eq 'autoupdate') || ($action eq 'usercreation') || ($action eq 'selfcreation') || |
if (($action eq 'autoupdate') || ($action eq 'usercreation') || ($action eq 'selfcreation') || |
($action eq 'usermodification') || ($action eq 'defaults') || ($action eq 'coursedefaults') || |
($action eq 'usermodification') || ($action eq 'defaults') || ($action eq 'coursedefaults') || |
($action eq 'selfenrollment') || ($action eq 'usersessions') || ($action eq 'directorysrch') || |
($action eq 'selfenrollment') || ($action eq 'usersessions') || ($action eq 'ssl') || |
($action eq 'helpsettings') || ($action eq 'contacts')) { |
($action eq 'directorysrch') || ($action eq 'trust') || ($action eq 'helpsettings') || |
|
($action eq 'contacts')) { |
$output .= $item->{'print'}->('top',$dom,$settings,\$rowtotal); |
$output .= $item->{'print'}->('top',$dom,$settings,\$rowtotal); |
} elsif ($action eq 'coursecategories') { |
} elsif ($action eq 'coursecategories') { |
$output .= $item->{'print'}->('top',$dom,$item,$settings,\$rowtotal); |
$output .= $item->{'print'}->('top',$dom,$item,$settings,\$rowtotal); |
Line 769 sub print_config_box {
|
Line 825 sub print_config_box {
|
$rowtotal ++; |
$rowtotal ++; |
if (($action eq 'autoupdate') || ($action eq 'usercreation') || |
if (($action eq 'autoupdate') || ($action eq 'usercreation') || |
($action eq 'selfcreation') || ($action eq 'selfenrollment') || |
($action eq 'selfcreation') || ($action eq 'selfenrollment') || |
($action eq 'usersessions') || ($action eq 'coursecategories') || |
($action eq 'usersessions') || ($action eq 'coursecategories') || |
($action eq 'contacts') || ($action eq 'defaults')) { |
($action eq 'trust') || ($action eq 'contacts') || ($action eq 'defaults')) { |
if ($action eq 'coursecategories') { |
if ($action eq 'coursecategories') { |
$output .= &print_coursecategories('middle',$dom,$item,$settings,\$rowtotal); |
$output .= &print_coursecategories('middle',$dom,$item,$settings,\$rowtotal); |
$colspan = ' colspan="2"'; |
$colspan = ' colspan="2"'; |
|
} elsif ($action eq 'trust') { |
|
$output .= $item->{'print'}->('shared',$dom,$settings,\$rowtotal); |
} else { |
} else { |
$output .= $item->{'print'}->('middle',$dom,$settings,\$rowtotal); |
$output .= $item->{'print'}->('middle',$dom,$settings,\$rowtotal); |
} |
} |
$output .= ' |
if ($action eq 'trust') { |
|
$output .= ' |
|
</table> |
|
</td> |
|
</tr>'; |
|
my @trusthdrs = qw(2 3 4 5 6 7); |
|
my @prefixes = qw(enroll othcoau coaurem domroles catalog reqcrs); |
|
for (my $i=0; $i<@trusthdrs; $i++) { |
|
$output .= ' |
|
<tr> |
|
<td> |
|
<table class="LC_nested"> |
|
<tr class="LC_info_row"> |
|
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[$trusthdrs[$i]]->{'col1'}).'</td> |
|
<td class="LC_right_item"'.$colspan.'>'.&mt($item->{'header'}->[$trusthdrs[$i]]->{'col2'}).'</td></tr>'. |
|
$item->{'print'}->($prefixes[$i],$dom,$settings,\$rowtotal).' |
|
</table> |
|
</td> |
|
</tr>'; |
|
} |
|
$output .= ' |
|
<tr> |
|
<td> |
|
<table class="LC_nested"> |
|
<tr class="LC_info_row"> |
|
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[8]->{'col1'}).'</td> |
|
<td class="LC_right_item"'.$colspan.'>'.&mt($item->{'header'}->[8]->{'col2'}).'</td></tr>'. |
|
$item->{'print'}->('bottom',$dom,$settings,\$rowtotal); |
|
} else { |
|
$output .= ' |
</table> |
</table> |
</td> |
</td> |
</tr> |
</tr> |
Line 788 sub print_config_box {
|
Line 875 sub print_config_box {
|
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[2]->{'col1'}).'</td> |
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[2]->{'col1'}).'</td> |
<td class="LC_right_item">'.&mt($item->{'header'}->[2]->{'col2'}).'</td> |
<td class="LC_right_item">'.&mt($item->{'header'}->[2]->{'col2'}).'</td> |
</tr>'."\n"; |
</tr>'."\n"; |
if ($action eq 'coursecategories') { |
if ($action eq 'coursecategories') { |
$output .= &print_coursecategories('bottom',$dom,$item,$settings,\$rowtotal); |
$output .= &print_coursecategories('bottom',$dom,$item,$settings,\$rowtotal); |
} else { |
} else { |
$output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal); |
$output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal); |
|
} |
} |
} |
$rowtotal ++; |
$rowtotal ++; |
} elsif (($action eq 'usermodification') || ($action eq 'coursedefaults') || |
} elsif (($action eq 'usermodification') || ($action eq 'coursedefaults') || |
($action eq 'defaults') || ($action eq 'directorysrch') || |
($action eq 'defaults') || ($action eq 'directorysrch') || |
($action eq 'helpsettings')) { |
($action eq 'helpsettings')) { |
$output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal); |
$output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal); |
|
} elsif ($action eq 'ssl') { |
|
$output .= $item->{'print'}->('connto',$dom,$settings,\$rowtotal).' |
|
</table> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td> |
|
<table class="LC_nested"> |
|
<tr class="LC_info_row"> |
|
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[2]->{'col1'}).'</td> |
|
<td class="LC_right_item"'.$colspan.'>'.&mt($item->{'header'}->[2]->{'col2'}).'</td></tr>'. |
|
$item->{'print'}->('connfrom',$dom,$settings,\$rowtotal).' |
|
</table> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td> |
|
<table class="LC_nested"> |
|
<tr class="LC_info_row"> |
|
<td class="LC_left_item"'.$colspan.'>'.&mt($item->{'header'}->[3]->{'col1'}).'</td> |
|
<td class="LC_right_item"'.$colspan.'>'.&mt($item->{'header'}->[3]->{'col2'}).'</td></tr>'. |
|
$item->{'print'}->('bottom',$dom,$settings,\$rowtotal); |
} elsif ($action eq 'login') { |
} elsif ($action eq 'login') { |
if ($numheaders == 4) { |
if ($numheaders == 4) { |
$output .= &print_login('page',$dom,$confname,$phase,$settings,\$rowtotal).' |
$output .= &print_login('page',$dom,$confname,$phase,$settings,\$rowtotal).' |
Line 868 sub print_config_box {
|
Line 978 sub print_config_box {
|
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item"'.$colspan.' valign="top">'.&mt($item->{'header'}->[4]->{'col1'}).'</td> |
<td class="LC_left_item"'.$colspan.' style="vertical-align: top">'.&mt($item->{'header'}->[4]->{'col1'}).'</td> |
<td class="LC_right_item" valign="top">'.&mt($item->{'header'}->[4]->{'col2'}).'</td> |
<td class="LC_right_item" style="vertical-align: top">'.&mt($item->{'header'}->[4]->{'col2'}).'</td> |
</tr>'. |
</tr>'. |
&print_validation_rows('requestcourses',$dom,$settings,\$rowtotal); |
&print_validation_rows('requestcourses',$dom,$settings,\$rowtotal); |
} elsif ($action eq 'requestauthor') { |
} elsif ($action eq 'requestauthor') { |
Line 884 sub print_config_box {
|
Line 994 sub print_config_box {
|
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item"'.$colspan.' valign="top">'. |
<td class="LC_left_item"'.$colspan.' style="vertical-align: top">'. |
&mt($item->{'header'}->[2]->{'col1'}).'</td> |
&mt($item->{'header'}->[2]->{'col1'}).'</td> |
<td class="LC_right_item" valign="top">'. |
<td class="LC_right_item" style="vertical-align: top">'. |
&mt($item->{'header'}->[2]->{'col2'}).'</td> |
&mt($item->{'header'}->[2]->{'col2'}).'</td> |
</tr>'. |
</tr>'. |
&print_rolecolors($phase,'author',$dom,$confname,$settings,\$rowtotal).' |
&print_rolecolors($phase,'author',$dom,$confname,$settings,\$rowtotal).' |
Line 914 sub print_config_box {
|
Line 1024 sub print_config_box {
|
<td class="LC_left_item" colspan="2">'.&mt($item->{'header'}->[0]->{'col1'}).'</td>'; |
<td class="LC_left_item" colspan="2">'.&mt($item->{'header'}->[0]->{'col1'}).'</td>'; |
} elsif ($action eq 'serverstatuses') { |
} elsif ($action eq 'serverstatuses') { |
$output .= ' |
$output .= ' |
<td class="LC_left_item" valign="top">'.&mt($item->{'header'}->[0]->{'col1'}). |
<td class="LC_left_item" style="vertical-align: top">'.&mt($item->{'header'}->[0]->{'col1'}). |
'<br />('.&mt('Automatic access for Dom. Coords.').')</td>'; |
'<br />('.&mt('Automatic access for Dom. Coords.').')</td>'; |
|
|
} else { |
} else { |
$output .= ' |
$output .= ' |
<td class="LC_left_item" valign="top">'.&mt($item->{'header'}->[0]->{'col1'}).'</td>'; |
<td class="LC_left_item" style="vertical-align: top">'.&mt($item->{'header'}->[0]->{'col1'}).'</td>'; |
} |
} |
if (defined($item->{'header'}->[0]->{'col3'})) { |
if (defined($item->{'header'}->[0]->{'col3'})) { |
$output .= '<td class="LC_left_item" valign="top">'. |
$output .= '<td class="LC_left_item" style="vertical-align: top">'. |
&mt($item->{'header'}->[0]->{'col2'}); |
&mt($item->{'header'}->[0]->{'col2'}); |
if ($action eq 'serverstatuses') { |
if ($action eq 'serverstatuses') { |
$output .= '<br />(<tt>'.&mt('user1:domain1,user2:domain2 etc.').'</tt>)'; |
$output .= '<br />(<tt>'.&mt('user1:domain1,user2:domain2 etc.').'</tt>)'; |
} |
} |
} else { |
} else { |
$output .= '<td class="LC_right_item" valign="top">'. |
$output .= '<td class="LC_right_item" style="vertical-align: top">'. |
&mt($item->{'header'}->[0]->{'col2'}); |
&mt($item->{'header'}->[0]->{'col2'}); |
} |
} |
$output .= '</td>'; |
$output .= '</td>'; |
if ($item->{'header'}->[0]->{'col3'}) { |
if ($item->{'header'}->[0]->{'col3'}) { |
if (defined($item->{'header'}->[0]->{'col4'})) { |
if (defined($item->{'header'}->[0]->{'col4'})) { |
$output .= '<td class="LC_left_item" valign="top">'. |
$output .= '<td class="LC_left_item" style="vertical-align: top">'. |
&mt($item->{'header'}->[0]->{'col3'}); |
&mt($item->{'header'}->[0]->{'col3'}); |
} else { |
} else { |
$output .= '<td class="LC_right_item" valign="top">'. |
$output .= '<td class="LC_right_item" style="vertical-align: top">'. |
&mt($item->{'header'}->[0]->{'col3'}); |
&mt($item->{'header'}->[0]->{'col3'}); |
} |
} |
if ($action eq 'serverstatuses') { |
if ($action eq 'serverstatuses') { |
Line 946 sub print_config_box {
|
Line 1056 sub print_config_box {
|
$output .= '</td>'; |
$output .= '</td>'; |
} |
} |
if ($item->{'header'}->[0]->{'col4'}) { |
if ($item->{'header'}->[0]->{'col4'}) { |
$output .= '<td class="LC_right_item" valign="top">'. |
$output .= '<td class="LC_right_item" style="vertical-align: top">'. |
&mt($item->{'header'}->[0]->{'col4'}); |
&mt($item->{'header'}->[0]->{'col4'}); |
} |
} |
$output .= '</tr>'; |
$output .= '</tr>'; |
Line 954 sub print_config_box {
|
Line 1064 sub print_config_box {
|
if ($action eq 'quotas') { |
if ($action eq 'quotas') { |
$output .= &print_quotas($dom,$settings,\$rowtotal,$action); |
$output .= &print_quotas($dom,$settings,\$rowtotal,$action); |
} elsif (($action eq 'autoenroll') || ($action eq 'autocreate') || |
} elsif (($action eq 'autoenroll') || ($action eq 'autocreate') || |
($action eq 'serverstatuses') || ($action eq 'loadbalancing') || |
($action eq 'serverstatuses') || ($action eq 'loadbalancing') || |
($action eq 'ltitools')) { |
($action eq 'ltitools')) { |
$output .= $item->{'print'}->($dom,$settings,\$rowtotal); |
$output .= $item->{'print'}->($dom,$settings,\$rowtotal); |
} elsif ($action eq 'scantron') { |
} elsif ($action eq 'scantron') { |
Line 979 sub print_login {
|
Line 1089 sub print_login {
|
my $choice = $choices{'disallowlogin'}; |
my $choice = $choices{'disallowlogin'}; |
$css_class = ' class="LC_odd_row"'; |
$css_class = ' class="LC_odd_row"'; |
$datatable .= '<tr'.$css_class.'><td>'.$choice.'</td>'. |
$datatable .= '<tr'.$css_class.'><td>'.$choice.'</td>'. |
'<td align="right"><table><tr><th>'.$choices{'hostid'}.'</th>'. |
'<td style="text-align: right"><table><tr><th>'.$choices{'hostid'}.'</th>'. |
'<th>'.$choices{'server'}.'</th>'. |
'<th>'.$choices{'server'}.'</th>'. |
'<th>'.$choices{'serverpath'}.'</th>'. |
'<th>'.$choices{'serverpath'}.'</th>'. |
'<th>'.$choices{'custompath'}.'</th>'. |
'<th>'.$choices{'custompath'}.'</th>'. |
Line 1260 sub print_login {
|
Line 1370 sub print_login {
|
my $choice = $choices{'headtag'}; |
my $choice = $choices{'headtag'}; |
$css_class = ' class="LC_odd_row"'; |
$css_class = ' class="LC_odd_row"'; |
$datatable .= '<tr'.$css_class.'><td colspan="2">'.$choice.'</td>'. |
$datatable .= '<tr'.$css_class.'><td colspan="2">'.$choice.'</td>'. |
'<td align="left"><table><tr><th>'.$choices{'hostid'}.'</th>'. |
'<td style="text-align: left"><table><tr><th>'.$choices{'hostid'}.'</th>'. |
'<th>'.$choices{'current'}.'</th>'. |
'<th>'.$choices{'current'}.'</th>'. |
'<th>'.$choices{'action'}.'</th>'. |
'<th>'.$choices{'action'}.'</th>'. |
'<th>'.$choices{'exempt'}.'</th></tr>'."\n"; |
'<th>'.$choices{'exempt'}.'</th></tr>'."\n"; |
Line 1546 sub display_color_options {
|
Line 1656 sub display_color_options {
|
if ($fullwidth ne '' && $fullheight ne '') { |
if ($fullwidth ne '' && $fullheight ne '') { |
if ($fullwidth > $width && $fullheight > $height) { |
if ($fullwidth > $width && $fullheight > $height) { |
my $size = $width.'x'.$height; |
my $size = $width.'x'.$height; |
my @args = ('convert','-sample',$size,$input,$output); |
system("convert -sample $size $input $output"); |
system({$args[0]} @args); |
|
$showfile = "/$imgdir/tn-".$filename; |
$showfile = "/$imgdir/tn-".$filename; |
} |
} |
} |
} |
Line 1617 sub display_color_options {
|
Line 1726 sub display_color_options {
|
'<table border="0"><tr>'; |
'<table border="0"><tr>'; |
|
|
foreach my $item (@{$bgs}) { |
foreach my $item (@{$bgs}) { |
$datatable .= '<td align="center">'.$choices->{$item}; |
$datatable .= '<td style="text-align: center">'.$choices->{$item}; |
my $color = $designs->{'bgs'}{$item} ? $designs->{'bgs'}{$item} : $defaults->{'bgs'}{$item}; |
my $color = $designs->{'bgs'}{$item} ? $designs->{'bgs'}{$item} : $defaults->{'bgs'}{$item}; |
if ($designs->{'bgs'}{$item}) { |
if ($designs->{'bgs'}{$item}) { |
$datatable .= ' '; |
$datatable .= ' '; |
Line 1645 sub display_color_options {
|
Line 1754 sub display_color_options {
|
'<table border="0"><tr>'; |
'<table border="0"><tr>'; |
foreach my $item (@{$links}) { |
foreach my $item (@{$links}) { |
my $color = $designs->{'links'}{$item} ? $designs->{'links'}{$item} : $defaults->{'links'}{$item}; |
my $color = $designs->{'links'}{$item} ? $designs->{'links'}{$item} : $defaults->{'links'}{$item}; |
$datatable .= '<td align="center">'.$choices->{$item}."\n"; |
$datatable .= '<td style="text-align: center">'.$choices->{$item}."\n"; |
if ($designs->{'links'}{$item}) { |
if ($designs->{'links'}{$item}) { |
$datatable.=' '; |
$datatable.=' '; |
} |
} |
Line 1706 sub login_text_colors {
|
Line 1815 sub login_text_colors {
|
my ($img,$role,$logintext,$phase,$choices,$designs,$defaults) = @_; |
my ($img,$role,$logintext,$phase,$choices,$designs,$defaults) = @_; |
my $color_menu = '<table border="0"><tr>'; |
my $color_menu = '<table border="0"><tr>'; |
foreach my $item (@{$logintext}) { |
foreach my $item (@{$logintext}) { |
$color_menu .= '<td align="center">'.$choices->{$item}; |
$color_menu .= '<td style="text-align: center">'.$choices->{$item}; |
my $color = $designs->{'logintext'}{$item} ? $designs->{'logintext'}{$item} : $defaults->{'logintext'}{$item}; |
my $color = $designs->{'logintext'}{$item} ? $designs->{'logintext'}{$item} : $defaults->{'logintext'}{$item}; |
$color_menu .= '<br /><input type="text" class="colorchooser" size="8" name="'.$role.'_'.$item.'" value="'.$color. |
$color_menu .= '<br /><input type="text" class="colorchooser" size="8" name="'.$role.'_'.$item.'" value="'.$color. |
'" onblur = "javascript:colchg_span('."'css_".$role.'_'.$item."'".',this);" /></td>'; |
'" onblur = "javascript:colchg_span('."'css_".$role.'_'.$item."'".',this);" /></td>'; |
Line 1741 sub image_changes {
|
Line 1850 sub image_changes {
|
$role.'_del_'.$img.'" value="1" />'.&mt('Delete?'). |
$role.'_del_'.$img.'" value="1" />'.&mt('Delete?'). |
'</label> '.&mt('Replace:').'</span><br />'; |
'</label> '.&mt('Replace:').'</span><br />'; |
} else { |
} else { |
$output .= '<td valign="middle">'.$logincolors.&mt('Upload:').'<br />'; |
$output .= '<td class="LC_middle">'.$logincolors.&mt('Upload:').'<br />'; |
} |
} |
} |
} |
return $output; |
return $output; |
Line 1760 sub print_quotas {
|
Line 1869 sub print_quotas {
|
my $typecount = 0; |
my $typecount = 0; |
my ($css_class,%titles); |
my ($css_class,%titles); |
if ($context eq 'requestcourses') { |
if ($context eq 'requestcourses') { |
@usertools = ('official','unofficial','community','textbook'); |
@usertools = ('official','unofficial','community','textbook','placement'); |
@options =('norequest','approval','validate','autolimit'); |
@options =('norequest','approval','validate','autolimit'); |
%validations = &Apache::lonnet::auto_courserequest_checks($dom); |
%validations = &Apache::lonnet::auto_courserequest_checks($dom); |
%titles = &courserequest_titles(); |
%titles = &courserequest_titles(); |
Line 2173 sub print_quotas {
|
Line 2282 sub print_quotas {
|
} |
} |
|
|
sub print_requestmail { |
sub print_requestmail { |
my ($dom,$action,$settings,$rowtotal) = @_; |
my ($dom,$action,$settings,$rowtotal,$customcss,$rowstyle) = @_; |
my ($now,$datatable,%currapp); |
my ($now,$datatable,%currapp); |
$now = time; |
$now = time; |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
Line 2185 sub print_requestmail {
|
Line 2294 sub print_requestmail {
|
} |
} |
my $numinrow = 2; |
my $numinrow = 2; |
my $css_class; |
my $css_class; |
$css_class = ($$rowtotal%2? ' class="LC_odd_row"':''); |
if ($$rowtotal%2) { |
|
$css_class = 'LC_odd_row'; |
|
} |
|
if ($customcss) { |
|
$css_class .= " $customcss"; |
|
} |
|
$css_class =~ s/^\s+//; |
|
if ($css_class) { |
|
$css_class = ' class="'.$css_class.'"'; |
|
} |
|
if ($rowstyle) { |
|
$css_class .= ' style="'.$rowstyle.'"'; |
|
} |
my $text; |
my $text; |
if ($action eq 'requestcourses') { |
if ($action eq 'requestcourses') { |
$text = &mt('Receive notification of course requests requiring approval'); |
$text = &mt('Receive notification of course requests requiring approval'); |
Line 2212 sub print_studentcode {
|
Line 2333 sub print_studentcode {
|
my ($settings,$rowtotal) = @_; |
my ($settings,$rowtotal) = @_; |
my $rownum = 0; |
my $rownum = 0; |
my ($output,%current); |
my ($output,%current); |
my @crstypes = ('official','unofficial','community','textbook'); |
my @crstypes = ('official','unofficial','community','textbook','placement'); |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
if (ref($settings->{'uniquecode'}) eq 'HASH') { |
if (ref($settings->{'uniquecode'}) eq 'HASH') { |
foreach my $type (@crstypes) { |
foreach my $type (@crstypes) { |
Line 2308 sub print_textbookcourses {
|
Line 2429 sub print_textbookcourses {
|
(' 'x2). |
(' 'x2). |
'<span class="LC_nobreak">'.&mt('Thumbnail:'); |
'<span class="LC_nobreak">'.&mt('Thumbnail:'); |
if ($image) { |
if ($image) { |
$datatable .= '<span class="LC_nobreak">'. |
$datatable .= $imgsrc. |
$imgsrc. |
|
'<label><input type="checkbox" name="'.$type.'_image_del"'. |
'<label><input type="checkbox" name="'.$type.'_image_del"'. |
' value="'.$key.'" />'.&mt('Delete?').'</label></span> '. |
' value="'.$key.'" />'.&mt('Delete?').'</label></span> '. |
'<span class="LC_nobreak"> '.&mt('Replace:').' '; |
'<span class="LC_nobreak"> '.&mt('Replace:').' '; |
Line 3004 sub print_contacts {
|
Line 3124 sub print_contacts {
|
$to{$item}.'" /></td></tr>'; |
$to{$item}.'" /></td></tr>'; |
$rownum ++; |
$rownum ++; |
} |
} |
} elsif ($position eq 'bottom') { |
} else { |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
|
$datatable .= '<tr'.$css_class.'>'. |
|
'<td>'.&mt('Extra helpdesk form fields:').'<br />'. |
|
&mt('(e-mail, subject, and description always shown)'). |
|
'</td><td class="LC_left_item">'; |
|
if ((ref($fields) eq 'ARRAY') && (ref($fieldtitles) eq 'HASH') && |
|
(ref($fieldoptions) eq 'HASH') && (ref($possoptions) eq 'HASH')) { |
|
$datatable .= '<table><tr><th>'.&mt('Field').'</th><th>'.&mt('Status').'</th></tr>'; |
|
foreach my $field (@{$fields}) { |
|
$datatable .= '<tr><td>'.$fieldtitles->{$field}; |
|
if (($field eq 'screenshot') || ($field eq 'cc')) { |
|
$datatable .= ' '.&mt('(logged-in users)'); |
|
} |
|
$datatable .='</td><td>'; |
|
my $clickaction; |
|
if ($field eq 'screenshot') { |
|
$clickaction = ' onclick="screenshotSize(this);"'; |
|
} |
|
if (ref($possoptions->{$field}) eq 'ARRAY') { |
|
foreach my $option (@{$possoptions->{$field}}) { |
|
my $checked; |
|
if ($currfield{$field} eq $option) { |
|
$checked = ' checked="checked"'; |
|
} |
|
$datatable .= '<span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="helpform_'.$field.'" '. |
|
'value="'.$option.'"'.$checked.$clickaction.' />'.$fieldoptions->{$option}. |
|
'</label></span>'.(' 'x2); |
|
} |
|
} |
|
if ($field eq 'screenshot') { |
|
my $display; |
|
if ($currfield{$field} eq 'no') { |
|
$display = ' style="display:none"'; |
|
} |
|
$datatable .= '</td></tr><tr id="help_screenshotsize"'.$display.' />'. |
|
'<td>'.&mt('Maximum size for upload (MB)').'</td><td>'. |
|
'<input type="text" size="5" name="helpform_maxsize" value="'.$maxsize.'" />'; |
|
} |
|
$datatable .= '</td></tr>'; |
|
} |
|
$datatable .= '</table>'; |
|
} |
|
$datatable .= '</td></tr>'."\n"; |
|
$rownum ++; |
|
} |
|
unless ($position eq 'top') { |
|
foreach my $type (@mailings) { |
foreach my $type (@mailings) { |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
Line 3111 sub print_contacts {
|
Line 3184 sub print_contacts {
|
\%choices,$rownum); |
\%choices,$rownum); |
$datatable .= $reports; |
$datatable .= $reports; |
} elsif ($position eq 'bottom') { |
} elsif ($position eq 'bottom') { |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
my (@posstypes,%usertypeshash); |
$datatable .= '<tr'.$css_class.'>'. |
if (ref($types) eq 'ARRAY') { |
'<td>'.&mt('Extra helpdesk form fields:').'<br />'. |
@posstypes = @{$types}; |
&mt('(e-mail, subject, and description always shown)'). |
} |
'</td><td class="LC_left_item">'; |
if (@posstypes) { |
if ((ref($fields) eq 'ARRAY') && (ref($fieldtitles) eq 'HASH') && |
if (ref($usertypes) eq 'HASH') { |
(ref($fieldoptions) eq 'HASH') && (ref($possoptions) eq 'HASH')) { |
%usertypeshash = %{$usertypes}; |
$datatable .= '<table><tr><th>'.&mt('Field').'</th><th>'.&mt('Status').'</th></tr>'; |
} |
foreach my $field (@{$fields}) { |
my @overridden; |
$datatable .= '<tr><td>'.$fieldtitles->{$field}; |
my $numinrow = 4; |
if (($field eq 'screenshot') || ($field eq 'cc')) { |
if (ref($settings) eq 'HASH') { |
$datatable .= ' '.&mt('(logged-in users)'); |
if (ref($settings->{'overrides'}) eq 'HASH') { |
} |
foreach my $key (sort(keys(%{$settings->{'overrides'}}))) { |
$datatable .='</td><td>'; |
if (ref($settings->{'overrides'}{$key}) eq 'HASH') { |
my $clickaction; |
push(@overridden,$key); |
if ($field eq 'screenshot') { |
foreach my $item (@contacts) { |
$clickaction = ' onclick="screenshotSize(this);"'; |
if ($settings->{'overrides'}{$key}{$item}) { |
} |
$checked{'override_'.$key}{$item} = ' checked="checked" '; |
if (ref($possoptions->{$field}) eq 'ARRAY') { |
} |
foreach my $option (@{$possoptions->{$field}}) { |
} |
my $checked; |
$otheremails{'override_'.$key} = $settings->{'overrides'}{$key}{'others'}; |
if ($currfield{$field} eq $option) { |
$bccemails{'override_'.$key} = $settings->{'overrides'}{$key}{'bcc'}; |
$checked = ' checked="checked"'; |
$includeloc{'override_'.$key} = ''; |
|
$includestr{'override_'.$key} = ''; |
|
if ($settings->{'overrides'}{$key}{'include'} ne '') { |
|
($includeloc{'override_'.$key},$includestr{'override_'.$key}) = |
|
split(/:/,$settings->{'overrides'}{$key}{'include'},2); |
|
$includestr{'override_'.$key} = &unescape($includestr{'override_'.$key}); |
|
} |
|
} |
} |
|
$datatable .= '<span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="helpform_'.$field.'" '. |
|
'value="'.$option.'"'.$checked.$clickaction.' />'.$fieldoptions->{$option}. |
|
'</label></span>'.(' 'x2); |
} |
} |
} |
} |
} |
if ($field eq 'screenshot') { |
my $customclass = 'LC_helpdesk_override'; |
my $display; |
my $optionsprefix = 'LC_options_helpdesk_'; |
if ($currfield{$field} eq 'no') { |
|
$display = ' style="display:none"'; |
my $onclicktypes = "toggleHelpdeskRow(this.form,'overrides','$customclass','$optionsprefix');"; |
} |
|
$datatable .= '</td></tr><tr id="help_screenshotsize"'.$display.' />'. |
$datatable .= &insttypes_row($settings,$types,$usertypes,$dom, |
'<td>'.&mt('Maximum size for upload (MB)').'</td><td>'. |
$numinrow,$othertitle,'overrides', |
'<input type="text" size="5" name="helpform_maxsize" value="'.$maxsize.'" />'; |
\$rownum,$onclicktypes,$customclass); |
|
$rownum ++; |
|
$usertypeshash{'default'} = $othertitle; |
|
foreach my $status (@posstypes) { |
|
my $css_class; |
|
if ($rownum%2) { |
|
$css_class = 'LC_odd_row '; |
|
} |
|
$css_class .= $customclass; |
|
my $rowid = $optionsprefix.$status; |
|
my $hidden = 1; |
|
my $currstyle = 'display:none'; |
|
if (grep(/^\Q$status\E$/,@overridden)) { |
|
$currstyle = 'display:table-row'; |
|
$hidden = 0; |
|
} |
|
my $key = 'override_'.$status; |
|
$datatable .= &overridden_helpdesk($checked{$key},$otheremails{$key},$bccemails{$key}, |
|
$includeloc{$key},$includestr{$key},$status,$rowid, |
|
$usertypeshash{$status},$css_class,$currstyle, |
|
\@contacts,$short_titles); |
|
unless ($hidden) { |
|
$rownum ++; |
|
} |
} |
|
$datatable .= '</td></tr>'; |
} |
} |
|
$datatable .= '</table>'; |
} |
} |
|
$datatable .= '</td></tr>'."\n"; |
|
$rownum ++; |
} |
} |
$$rowtotal += $rownum; |
$$rowtotal += $rownum; |
return $datatable; |
return $datatable; |
} |
} |
|
|
sub overridden_helpdesk { |
|
my ($checked,$otheremails,$bccemails,$includeloc,$includestr,$type,$rowid, |
|
$typetitle,$css_class,$rowstyle,$contacts,$short_titles) = @_; |
|
my $class = 'LC_left_item'; |
|
if ($css_class) { |
|
$css_class = ' class="'.$css_class.'"'; |
|
} |
|
if ($rowid) { |
|
$rowid = ' id="'.$rowid.'"'; |
|
} |
|
if ($rowstyle) { |
|
$rowstyle = ' style="'.$rowstyle.'"'; |
|
} |
|
my ($output,$description); |
|
$description = &mt('Helpdesk requests from: [_1] in this domain (overrides default)',"<b>$typetitle</b>"); |
|
$output = '<tr'.$css_class.$rowid.$rowstyle.'>'. |
|
"<td>$description</td>\n". |
|
'<td class="'.$class.'" colspan="2">'. |
|
'<fieldset><legend>'.&mt('E-mail recipient(s)').'</legend>'. |
|
'<span class="LC_nobreak">'; |
|
if (ref($contacts) eq 'ARRAY') { |
|
foreach my $item (@{$contacts}) { |
|
my $check; |
|
if (ref($checked) eq 'HASH') { |
|
$check = $checked->{$item}; |
|
} |
|
my $title; |
|
if (ref($short_titles) eq 'HASH') { |
|
$title = $short_titles->{$item}; |
|
} |
|
$output .= '<label>'. |
|
'<input type="checkbox" name="override_'.$type.'"'.$check. |
|
' value="'.$item.'" />'.$title.'</label> '; |
|
} |
|
} |
|
$output .= '</span><br />'.&mt('Others').': '. |
|
'<input type="text" name="override_'.$type.'_others" '. |
|
'value="'.$otheremails.'" />'; |
|
my %locchecked; |
|
foreach my $loc ('s','b') { |
|
if ($includeloc eq $loc) { |
|
$locchecked{$loc} = ' checked="checked"'; |
|
last; |
|
} |
|
} |
|
$output .= '<br />'.&mt('Bcc:').(' 'x6). |
|
'<input type="text" name="override_'.$type.'_bcc" '. |
|
'value="'.$bccemails.'" /></fieldset>'. |
|
'<fieldset><legend>'.&mt('Optional added text').'</legend>'. |
|
&mt('Text automatically added to e-mail:').' '. |
|
'<input type="text" name="override_'.$type.'_includestr" value="'.$includestr.'" /><br >'. |
|
'<span class="LC_nobreak">'.&mt('Location:').' '. |
|
'<label><input type="radio" name="override_'.$type.'_includeloc" value="s"'.$locchecked{'s'}.' />'.&mt('in subject').'</label>'. |
|
(' 'x2). |
|
'<label><input type="radio" name="override_'.$type.'_includeloc" value="b"'.$locchecked{'b'}.' />'.&mt('in body').'</label>'. |
|
'</span></fieldset>'. |
|
'</td></tr>'."\n"; |
|
return $output; |
|
} |
|
|
|
sub contacts_javascript { |
sub contacts_javascript { |
return <<"ENDSCRIPT"; |
return <<"ENDSCRIPT"; |
|
|
Line 3260 function screenshotSize(field) {
|
Line 3251 function screenshotSize(field) {
|
return; |
return; |
} |
} |
|
|
function toggleHelpdeskRow(form,checkbox,target,prefix,docount) { |
|
if (form.elements[checkbox].length != undefined) { |
|
var count = 0; |
|
if (docount) { |
|
for (var i=0; i<form.elements[checkbox].length; i++) { |
|
if (form.elements[checkbox][i].checked) { |
|
count ++; |
|
} |
|
} |
|
} |
|
for (var i=0; i<form.elements[checkbox].length; i++) { |
|
var type = form.elements[checkbox][i].value; |
|
if (document.getElementById(prefix+type)) { |
|
if (form.elements[checkbox][i].checked) { |
|
document.getElementById(prefix+type).style.display = 'table-row'; |
|
if (count % 2 == 1) { |
|
document.getElementById(prefix+type).className = target+' LC_odd_row'; |
|
} else { |
|
document.getElementById(prefix+type).className = target; |
|
} |
|
count ++; |
|
} else { |
|
document.getElementById(prefix+type).style.display = 'none'; |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
|
|
// ]]> |
// ]]> |
</script> |
</script> |
|
|
Line 3396 sub print_helpsettings {
|
Line 3356 sub print_helpsettings {
|
my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); |
my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
my $chgstr = ' onchange="javascript:reorderHelpRoles(this.form,'."'helproles_".$num."_pos'".');"'; |
my $chgstr = ' onchange="javascript:reorderHelpRoles(this.form,'."'helproles_".$num."_pos'".');"'; |
$datatable .= '<tr '.$css_class.'><td valign="top"><b>'.$role.'</b><br />'. |
$datatable .= '<tr '.$css_class.'><td style="vertical-align: top"><b>'.$role.'</b><br />'. |
'<select name="helproles_'.$num.'_pos"'.$chgstr.'>'; |
'<select name="helproles_'.$num.'_pos"'.$chgstr.'>'; |
for (my $k=0; $k<=$maxnum; $k++) { |
for (my $k=0; $k<=$maxnum; $k++) { |
my $vpos = $k+1; |
my $vpos = $k+1; |
Line 3435 sub print_helpsettings {
|
Line 3395 sub print_helpsettings {
|
&Apache::lonuserutils::custom_role_privs(\%privs,\%full,\%levels,\%levelscurrent); |
&Apache::lonuserutils::custom_role_privs(\%privs,\%full,\%levels,\%levelscurrent); |
my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); |
my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); |
my $chgstr = ' onchange="javascript:reorderHelpRoles(this.form,'."'helproles_".$count."_pos'".');"'; |
my $chgstr = ' onchange="javascript:reorderHelpRoles(this.form,'."'helproles_".$count."_pos'".');"'; |
$datatable .= '<tr '.$css_class.'><td valign="top"><span class="LC_nobreak"><label>'. |
$datatable .= '<tr '.$css_class.'><td style="vertical-align: top"><span class="LC_nobreak"><label>'. |
'<input type="hidden" name="helproles_maxnum" value="'.$maxnum.'" />'."\n". |
'<input type="hidden" name="helproles_maxnum" value="'.$maxnum.'" />'."\n". |
'<select name="helproles_'.$count.'_pos"'.$chgstr.'>'; |
'<select name="helproles_'.$count.'_pos"'.$chgstr.'>'; |
for (my $k=0; $k<$maxnum+1; $k++) { |
for (my $k=0; $k<$maxnum+1; $k++) { |
Line 3714 sub radiobutton_prefs {
|
Line 3674 sub radiobutton_prefs {
|
foreach my $item (@{$toggles}) { |
foreach my $item (@{$toggles}) { |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$datatable .= |
$datatable .= |
'<tr'.$css_class.'><td valign="top">'. |
'<tr'.$css_class.'><td style="vertical-align: top">'. |
'<span class="LC_nobreak">'.$choices->{$item}. |
'<span class="LC_nobreak">'.$choices->{$item}. |
'</span></td>'; |
'</span></td>'; |
if ($align eq 'left') { |
if ($align eq 'left') { |
Line 3905 sub print_ltitools {
|
Line 3865 sub print_ltitools {
|
if (!$rolemaps{$role}) { |
if (!$rolemaps{$role}) { |
$selectnone = ' selected="selected"'; |
$selectnone = ' selected="selected"'; |
} |
} |
$datatable .= '<td align="center">'. |
$datatable .= '<td style="text-align: center">'. |
&Apache::lonnet::plaintext($role,'Course').'<br />'. |
&Apache::lonnet::plaintext($role,'Course').'<br />'. |
'<select name="ltitools_roles_'.$role.'_'.$i.'">'. |
'<select name="ltitools_roles_'.$role.'_'.$i.'">'. |
'<option value=""'.$selectnone.'>'.&mt('Select').'</option>'; |
'<option value=""'.$selectnone.'>'.&mt('Select').'</option>'; |
Line 4039 sub print_ltitools {
|
Line 3999 sub print_ltitools {
|
'<fieldset><legend>'.&mt('Role mapping').'</legend><table><tr>'; |
'<fieldset><legend>'.&mt('Role mapping').'</legend><table><tr>'; |
foreach my $role (@courseroles) { |
foreach my $role (@courseroles) { |
my ($checked,$checkednone); |
my ($checked,$checkednone); |
$datatable .= '<td align="center">'. |
$datatable .= '<td style="text-align: center">'. |
&Apache::lonnet::plaintext($role,'Course').'<br />'. |
&Apache::lonnet::plaintext($role,'Course').'<br />'. |
'<select name="ltitools_add_roles_'.$role.'">'. |
'<select name="ltitools_add_roles_'.$role.'">'. |
'<option value="" selected="selected">'.&mt('Select').'</option>'; |
'<option value="" selected="selected">'.&mt('Select').'</option>'; |
Line 4077 sub ltitools_names {
|
Line 4037 sub ltitools_names {
|
'url' => 'URL', |
'url' => 'URL', |
'key' => 'Key', |
'key' => 'Key', |
'secret' => 'Secret', |
'secret' => 'Secret', |
'icon' => 'Icon', |
'icon' => 'Icon', |
'user' => 'Username:domain', |
'user' => 'Username:domain', |
'fullname' => 'Full Name', |
'fullname' => 'Full Name', |
'firstname' => 'First Name', |
'firstname' => 'First Name', |
Line 4095 sub ltitools_names {
|
Line 4055 sub ltitools_names {
|
'roster' => 'Tool can retrieve roster:', |
'roster' => 'Tool can retrieve roster:', |
'crstarget' => 'Display target', |
'crstarget' => 'Display target', |
'crslabel' => 'Course label', |
'crslabel' => 'Course label', |
'crstitle' => 'Course title', |
'crstitle' => 'Course title', |
'crslinktext' => 'Link Text', |
'crslinktext' => 'Link Text', |
'crsexplanation' => 'Explanation', |
'crsexplanation' => 'Explanation', |
); |
); |
|
|
return %lt; |
return %lt; |
} |
} |
|
|
Line 4108 sub print_coursedefaults {
|
Line 4067 sub print_coursedefaults {
|
my ($css_class,$datatable,%checkedon,%checkedoff,%defaultchecked,@toggles); |
my ($css_class,$datatable,%checkedon,%checkedoff,%defaultchecked,@toggles); |
my $itemcount = 1; |
my $itemcount = 1; |
my %choices = &Apache::lonlocal::texthash ( |
my %choices = &Apache::lonlocal::texthash ( |
|
canuse_pdfforms => 'Course/Community users can create/upload PDF forms', |
uploadquota => 'Default quota for files uploaded directly to course/community using Course Editor (MB)', |
uploadquota => 'Default quota for files uploaded directly to course/community using Course Editor (MB)', |
anonsurvey_threshold => 'Responder count needed before showing submissions for anonymous surveys', |
anonsurvey_threshold => 'Responder count needed before showing submissions for anonymous surveys', |
coursecredits => 'Credits can be specified for courses', |
coursecredits => 'Credits can be specified for courses', |
uselcmath => 'Math preview uses LON-CAPA previewer (javascript) in place of DragMath (Java)', |
uselcmath => 'Math preview uses LON-CAPA previewer (javascript) in place of DragMath (Java)', |
usejsme => 'Molecule editor uses JSME (HTML5) in place of JME (Java)', |
usejsme => 'Molecule editor uses JSME (HTML5) in place of JME (Java)', |
|
texengine => 'Default method to display mathematics', |
postsubmit => 'Disable submit button/keypress following student submission', |
postsubmit => 'Disable submit button/keypress following student submission', |
canclone => "People who may clone a course (besides course's owner and coordinators)", |
canclone => "People who may clone a course (besides course's owner and coordinators)", |
mysqltables => 'Lifetime (s) of "Temporary" MySQL tables (student performance data) on homeserver', |
mysqltables => 'Lifetime (s) of "Temporary" MySQL tables (student performance data) on homeserver', |
); |
); |
my %staticdefaults = ( |
my %staticdefaults = ( |
|
texengine => 'MathJax', |
anonsurvey_threshold => 10, |
anonsurvey_threshold => 10, |
uploadquota => 500, |
uploadquota => 500, |
postsubmit => 60, |
postsubmit => 60, |
Line 4125 sub print_coursedefaults {
|
Line 4087 sub print_coursedefaults {
|
); |
); |
if ($position eq 'top') { |
if ($position eq 'top') { |
%defaultchecked = ( |
%defaultchecked = ( |
|
'canuse_pdfforms' => 'off', |
'uselcmath' => 'on', |
'uselcmath' => 'on', |
'usejsme' => 'on', |
'usejsme' => 'on', |
'canclone' => 'none', |
'canclone' => 'none', |
); |
); |
@toggles = ('uselcmath','usejsme'); |
@toggles = ('canuse_pdfforms','uselcmath','usejsme'); |
|
my $deftex = $staticdefaults{'texengine'}; |
|
if (ref($settings) eq 'HASH') { |
|
if ($settings->{'texengine'}) { |
|
if ($settings->{'texengine'} =~ /^(MathJax|mimetex|tth)$/) { |
|
$deftex = $settings->{'texengine'}; |
|
} |
|
} |
|
} |
|
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
my $mathdisp = '<tr'.$css_class.'><td style="vertical-align: top">'. |
|
'<span class="LC_nobreak">'.$choices{'texengine'}. |
|
'</span></td><td class="LC_right_item">'. |
|
'<select name="texengine">'."\n"; |
|
my %texoptions = ( |
|
MathJax => 'MathJax', |
|
mimetex => &mt('Convert to Images'), |
|
tth => &mt('TeX to HTML'), |
|
); |
|
foreach my $renderer ('MathJax','mimetex','tth') { |
|
my $selected = ''; |
|
if ($renderer eq $deftex) { |
|
$selected = ' selected="selected"'; |
|
} |
|
$mathdisp .= '<option value="'.$renderer.'"'.$selected.'>'.$texoptions{$renderer}.'</option>'."\n"; |
|
} |
|
$mathdisp .= '</select></td></tr>'."\n"; |
|
$itemcount ++; |
($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked, |
($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked, |
\%choices,$itemcount); |
\%choices,$itemcount); |
|
$datatable = $mathdisp.$datatable; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$datatable .= |
$datatable .= |
'<tr'.$css_class.'><td valign="top">'. |
'<tr'.$css_class.'><td style="vertical-align: top">'. |
'<span class="LC_nobreak">'.$choices{'canclone'}. |
'<span class="LC_nobreak">'.$choices{'canclone'}. |
'</span></td><td class="LC_left_item">'; |
'</span></td><td class="LC_left_item">'; |
my $currcanclone = 'none'; |
my $currcanclone = 'none'; |
Line 4208 sub print_coursedefaults {
|
Line 4199 sub print_coursedefaults {
|
my ($currdefresponder,%defcredits,%curruploadquota,%deftimeout,%currmysql); |
my ($currdefresponder,%defcredits,%curruploadquota,%deftimeout,%currmysql); |
my $currusecredits = 0; |
my $currusecredits = 0; |
my $postsubmitclient = 1; |
my $postsubmitclient = 1; |
my @types = ('official','unofficial','community','textbook'); |
my @types = ('official','unofficial','community','textbook','placement'); |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
$currdefresponder = $settings->{'anonsurvey_threshold'}; |
$currdefresponder = $settings->{'anonsurvey_threshold'}; |
if (ref($settings->{'uploadquota'}) eq 'HASH') { |
if (ref($settings->{'uploadquota'}) eq 'HASH') { |
Line 4286 sub print_coursedefaults {
|
Line 4277 sub print_coursedefaults {
|
$datatable .= '<tr'.$css_class.'><td><span class="LC_nobreak">'. |
$datatable .= '<tr'.$css_class.'><td><span class="LC_nobreak">'. |
$choices{'uploadquota'}. |
$choices{'uploadquota'}. |
'</span></td>'. |
'</span></td>'. |
'<td align="right" class="LC_right_item">'. |
'<td style="text-align: right" class="LC_right_item">'. |
'<table><tr>'; |
'<table><tr>'; |
foreach my $type (@types) { |
foreach my $type (@types) { |
$datatable .= '<td align="center">'.&mt($type).'<br />'. |
$datatable .= '<td style="text-align: center">'.&mt($type).'<br />'. |
'<input type="text" name="uploadquota_'.$type.'"'. |
'<input type="text" name="uploadquota_'.$type.'"'. |
' value="'.$curruploadquota{$type}.'" size="5" /></td>'; |
' value="'.$curruploadquota{$type}.'" size="5" /></td>'; |
} |
} |
Line 4304 sub print_coursedefaults {
|
Line 4295 sub print_coursedefaults {
|
'<i>'.&mt('Default credits').'</i><br /><table><tr>'; |
'<i>'.&mt('Default credits').'</i><br /><table><tr>'; |
foreach my $type (@types) { |
foreach my $type (@types) { |
next if ($type eq 'community'); |
next if ($type eq 'community'); |
$additional .= '<td align="center">'.&mt($type).'<br />'. |
$additional .= '<td style="text-align: center">'.&mt($type).'<br />'. |
'<input type="text" name="'.$type.'_credits"'. |
'<input type="text" name="'.$type.'_credits"'. |
' value="'.$defcredits{$type}.'" size="3" /></td>'; |
' value="'.$defcredits{$type}.'" size="3" /></td>'; |
} |
} |
Line 4328 sub print_coursedefaults {
|
Line 4319 sub print_coursedefaults {
|
'<i>'.&mt('Enter 0 to remain disabled until page reload.').'</i><br />'. |
'<i>'.&mt('Enter 0 to remain disabled until page reload.').'</i><br />'. |
'<table><tr>'; |
'<table><tr>'; |
foreach my $type (@types) { |
foreach my $type (@types) { |
$additional .= '<td align="center">'.&mt($type).'<br />'. |
$additional .= '<td style="text-align: center">'.&mt($type).'<br />'. |
'<input type="text" name="'.$type.'_timeout" value="'. |
'<input type="text" name="'.$type.'_timeout" value="'. |
$deftimeout{$type}.'" size="5" /></td>'; |
$deftimeout{$type}.'" size="5" /></td>'; |
} |
} |
Line 4346 sub print_coursedefaults {
|
Line 4337 sub print_coursedefaults {
|
$datatable .= '<tr'.$css_class.'><td><span class="LC_nobreak">'. |
$datatable .= '<tr'.$css_class.'><td><span class="LC_nobreak">'. |
$choices{'mysqltables'}. |
$choices{'mysqltables'}. |
'</span></td>'. |
'</span></td>'. |
'<td align="right" class="LC_right_item">'. |
'<td style="text-align: right" class="LC_right_item">'. |
'<table><tr>'; |
'<table><tr>'; |
foreach my $type (@types) { |
foreach my $type (@types) { |
$datatable .= '<td align="center">'.&mt($type).'<br />'. |
$datatable .= '<td style="text-align: center">'.&mt($type).'<br />'. |
'<input type="text" name="mysqltables_'.$type.'"'. |
'<input type="text" name="mysqltables_'.$type.'"'. |
' value="'.$currmysql{$type}.'" size="8" /></td>'; |
' value="'.$currmysql{$type}.'" size="8" /></td>'; |
} |
} |
Line 4365 sub print_selfenrollment {
|
Line 4356 sub print_selfenrollment {
|
my ($position,$dom,$settings,$rowtotal) = @_; |
my ($position,$dom,$settings,$rowtotal) = @_; |
my ($css_class,$datatable); |
my ($css_class,$datatable); |
my $itemcount = 1; |
my $itemcount = 1; |
my @types = ('official','unofficial','community','textbook'); |
my @types = ('official','unofficial','community','textbook','placement'); |
if (($position eq 'top') || ($position eq 'middle')) { |
if (($position eq 'top') || ($position eq 'middle')) { |
my ($rowsref,$titlesref) = &Apache::lonuserutils::get_selfenroll_titles(); |
my ($rowsref,$titlesref) = &Apache::lonuserutils::get_selfenroll_titles(); |
my %descs = &Apache::lonuserutils::selfenroll_default_descs(); |
my %descs = &Apache::lonuserutils::selfenroll_default_descs(); |
Line 4588 sub print_validation_rows {
|
Line 4579 sub print_validation_rows {
|
|
|
sub print_usersessions { |
sub print_usersessions { |
my ($position,$dom,$settings,$rowtotal) = @_; |
my ($position,$dom,$settings,$rowtotal) = @_; |
my ($css_class,$datatable,%checked,%choices); |
my ($css_class,$datatable,$itemcount,%checked,%choices); |
my (%by_ip,%by_location,@intdoms); |
my (%by_ip,%by_location,@intdoms,@instdoms); |
&build_location_hashes(\@intdoms,\%by_ip,\%by_location); |
&build_location_hashes(\@intdoms,\%by_ip,\%by_location,\@instdoms); |
|
|
my @alldoms = &Apache::lonnet::all_domains(); |
my @alldoms = &Apache::lonnet::all_domains(); |
my %serverhomes = %Apache::lonnet::serverhomeIDs; |
my %serverhomes = %Apache::lonnet::serverhomeIDs; |
my %servers = &Apache::lonnet::internet_dom_servers($dom); |
my %servers = &Apache::lonnet::internet_dom_servers($dom); |
my %altids = &id_for_thisdom(%servers); |
my %altids = &id_for_thisdom(%servers); |
my $itemcount = 1; |
|
if ($position eq 'top') { |
if ($position eq 'top') { |
if (keys(%serverhomes) > 1) { |
if (keys(%serverhomes) > 1) { |
my %spareid = ¤t_offloads_to($dom,$settings,\%servers); |
my %spareid = ¤t_offloads_to($dom,$settings,\%servers); |
Line 4609 sub print_usersessions {
|
Line 4599 sub print_usersessions {
|
$datatable .= &spares_row($dom,\%servers,\%spareid,\%serverhomes,\%altids,$curroffloadnow,$rowtotal); |
$datatable .= &spares_row($dom,\%servers,\%spareid,\%serverhomes,\%altids,$curroffloadnow,$rowtotal); |
} else { |
} else { |
$datatable .= '<tr'.$css_class.'><td colspan="2">'. |
$datatable .= '<tr'.$css_class.'><td colspan="2">'. |
&mt('Nothing to set here, as the cluster to which this domain belongs only contains one server.'); |
&mt('Nothing to set here, as the cluster to which this domain belongs only contains one server.'). |
|
'</td></tr>'; |
} |
} |
} else { |
} else { |
if (keys(%by_location) == 0) { |
my %titles = &usersession_titles(); |
$datatable .= '<tr'.$css_class.'><td colspan="2">'. |
my ($prefix,@types); |
&mt('Nothing to set here, as the cluster to which this domain belongs only contains one institution.'); |
if ($position eq 'bottom') { |
|
$prefix = 'remote'; |
|
@types = ('version','excludedomain','includedomain'); |
} else { |
} else { |
my %lt = &usersession_titles(); |
$prefix = 'hosted'; |
my $numinrow = 5; |
@types = ('excludedomain','includedomain'); |
my $prefix; |
} |
my @types; |
($datatable,$itemcount) = &rules_by_location($settings,$prefix,\%by_location,\%by_ip,\@types,\%titles); |
if ($position eq 'bottom') { |
} |
$prefix = 'remote'; |
$$rowtotal += $itemcount; |
@types = ('version','excludedomain','includedomain'); |
return $datatable; |
} else { |
} |
$prefix = 'hosted'; |
|
@types = ('excludedomain','includedomain'); |
sub rules_by_location { |
} |
my ($settings,$prefix,$by_location,$by_ip,$types,$titles) = @_; |
my (%current,%checkedon,%checkedoff); |
my ($datatable,$itemcount,$css_class); |
my @lcversions = &Apache::lonnet::all_loncaparevs(); |
if (keys(%{$by_location}) == 0) { |
my @locations = sort(keys(%by_location)); |
$css_class = $itemcount%2 ? ' class="LC_odd_row"' : ''; |
foreach my $type (@types) { |
$datatable = '<tr'.$css_class.'><td colspan="2">'. |
$checkedon{$type} = ''; |
&mt('Nothing to set here, as the cluster to which this domain belongs only contains one institution.'). |
$checkedoff{$type} = ' checked="checked"'; |
'</td></tr>'; |
} |
$itemcount = 1; |
if (ref($settings) eq 'HASH') { |
} else { |
if (ref($settings->{$prefix}) eq 'HASH') { |
$itemcount = 0; |
foreach my $key (keys(%{$settings->{$prefix}})) { |
my $numinrow = 5; |
$current{$key} = $settings->{$prefix}{$key}; |
my (%current,%checkedon,%checkedoff); |
if ($key eq 'version') { |
my @locations = sort(keys(%{$by_location})); |
if ($current{$key} ne '') { |
foreach my $type (@{$types}) { |
$checkedon{$key} = ' checked="checked"'; |
$checkedon{$type} = ''; |
$checkedoff{$key} = ''; |
$checkedoff{$type} = ' checked="checked"'; |
} |
} |
} elsif (ref($current{$key}) eq 'ARRAY') { |
if (ref($settings) eq 'HASH') { |
|
if (ref($settings->{$prefix}) eq 'HASH') { |
|
foreach my $key (keys(%{$settings->{$prefix}})) { |
|
$current{$key} = $settings->{$prefix}{$key}; |
|
if ($key eq 'version') { |
|
if ($current{$key} ne '') { |
$checkedon{$key} = ' checked="checked"'; |
$checkedon{$key} = ' checked="checked"'; |
$checkedoff{$key} = ''; |
$checkedoff{$key} = ''; |
} |
} |
|
} elsif (ref($current{$key}) eq 'ARRAY') { |
|
$checkedon{$key} = ' checked="checked"'; |
|
$checkedoff{$key} = ''; |
} |
} |
} |
} |
} |
} |
foreach my $type (@types) { |
} |
next if ($type ne 'version' && !@locations); |
foreach my $type (@{$types}) { |
$css_class = $itemcount%2 ? ' class="LC_odd_row"' : ''; |
next if ($type ne 'version' && !@locations); |
$datatable .= '<tr'.$css_class.'> |
$css_class = $itemcount%2 ? ' class="LC_odd_row"' : ''; |
<td><span class="LC_nobreak">'.$lt{$type}.'</span><br /> |
$datatable .= '<tr'.$css_class.'> |
<span class="LC_nobreak"> |
<td><span class="LC_nobreak">'.$titles->{$type}.'</span><br /> |
<label><input type="radio" name="'.$prefix.'_'.$type.'_inuse" '.$checkedoff{$type}.' value="0" />'.&mt('Not in use').'</label> |
<span class="LC_nobreak"> |
<label><input type="radio" name="'.$prefix.'_'.$type.'_inuse" '.$checkedon{$type}.' value="1" />'.&mt('In use').'</label></span></td><td>'; |
<label><input type="radio" name="'.$prefix.'_'.$type.'_inuse" '.$checkedoff{$type}.' value="0" />'.&mt('Not in use').'</label> |
if ($type eq 'version') { |
<label><input type="radio" name="'.$prefix.'_'.$type.'_inuse" '.$checkedon{$type}.' value="1" />'.&mt('In use').'</label></span></td><td>'; |
my $selector = '<select name="'.$prefix.'_version">'; |
if ($type eq 'version') { |
foreach my $version (@lcversions) { |
my @lcversions = &Apache::lonnet::all_loncaparevs(); |
my $selected = ''; |
my $selector = '<select name="'.$prefix.'_version">'; |
if ($current{'version'} eq $version) { |
foreach my $version (@lcversions) { |
$selected = ' selected="selected"'; |
my $selected = ''; |
} |
if ($current{'version'} eq $version) { |
$selector .= ' <option value="'.$version.'"'. |
$selected = ' selected="selected"'; |
$selected.'>'.$version.'</option>'; |
|
} |
} |
$selector .= '</select> '; |
$selector .= ' <option value="'.$version.'"'. |
$datatable .= &mt('remote server must be version: [_1] or later',$selector); |
$selected.'>'.$version.'</option>'; |
} else { |
} |
$datatable.= '<div><input type="button" value="'.&mt('check all').'" '. |
$selector .= '</select> '; |
'onclick="javascript:checkAll(document.display.'.$prefix.'_'.$type.')"'. |
$datatable .= &mt('remote server must be version: [_1] or later',$selector); |
' />'.(' 'x2). |
} else { |
'<input type="button" value="'.&mt('uncheck all').'" '. |
$datatable.= '<div><input type="button" value="'.&mt('check all').'" '. |
'onclick="javascript:uncheckAll(document.display.'.$prefix.'_'.$type.')" />'. |
'onclick="javascript:checkAll(document.display.'.$prefix.'_'.$type.')"'. |
"\n". |
' />'.(' 'x2). |
'</div><div><table>'; |
'<input type="button" value="'.&mt('uncheck all').'" '. |
my $rem; |
'onclick="javascript:uncheckAll(document.display.'.$prefix.'_'.$type.')" />'. |
for (my $i=0; $i<@locations; $i++) { |
"\n". |
my ($showloc,$value,$checkedtype); |
'</div><div><table>'; |
if (ref($by_location{$locations[$i]}) eq 'ARRAY') { |
my $rem; |
my $ip = $by_location{$locations[$i]}->[0]; |
for (my $i=0; $i<@locations; $i++) { |
if (ref($by_ip{$ip}) eq 'ARRAY') { |
my ($showloc,$value,$checkedtype); |
$value = join(':',@{$by_ip{$ip}}); |
if (ref($by_location->{$locations[$i]}) eq 'ARRAY') { |
$showloc = join(', ',@{$by_ip{$ip}}); |
my $ip = $by_location->{$locations[$i]}->[0]; |
if (ref($current{$type}) eq 'ARRAY') { |
if (ref($by_ip->{$ip}) eq 'ARRAY') { |
foreach my $loc (@{$by_ip{$ip}}) { |
$value = join(':',@{$by_ip->{$ip}}); |
if (grep(/^\Q$loc\E$/,@{$current{$type}})) { |
$showloc = join(', ',@{$by_ip->{$ip}}); |
$checkedtype = ' checked="checked"'; |
if (ref($current{$type}) eq 'ARRAY') { |
last; |
foreach my $loc (@{$by_ip->{$ip}}) { |
} |
if (grep(/^\Q$loc\E$/,@{$current{$type}})) { |
|
$checkedtype = ' checked="checked"'; |
|
last; |
} |
} |
} |
} |
} |
} |
} |
} |
$rem = $i%($numinrow); |
|
if ($rem == 0) { |
|
if ($i > 0) { |
|
$datatable .= '</tr>'; |
|
} |
|
$datatable .= '<tr>'; |
|
} |
|
$datatable .= '<td class="LC_left_item">'. |
|
'<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="'.$prefix.'_'.$type. |
|
'" value="'.$value.'"'.$checkedtype.' />'.$showloc. |
|
'</label></span></td>'; |
|
} |
} |
$rem = @locations%($numinrow); |
$rem = $i%($numinrow); |
my $colsleft = $numinrow - $rem; |
if ($rem == 0) { |
if ($colsleft > 1 ) { |
if ($i > 0) { |
$datatable .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
$datatable .= '</tr>'; |
' </td>'; |
} |
} elsif ($colsleft == 1) { |
$datatable .= '<tr>'; |
$datatable .= '<td class="LC_left_item"> </td>'; |
} |
|
$datatable .= '<td class="LC_left_item">'. |
|
'<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="'.$prefix.'_'.$type. |
|
'" value="'.$value.'"'.$checkedtype.' />'.$showloc. |
|
'</label></span></td>'; |
|
} |
|
$rem = @locations%($numinrow); |
|
my $colsleft = $numinrow - $rem; |
|
if ($colsleft > 1 ) { |
|
$datatable .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
|
' </td>'; |
|
} elsif ($colsleft == 1) { |
|
$datatable .= '<td class="LC_left_item"> </td>'; |
|
} |
|
$datatable .= '</tr></table>'; |
|
} |
|
$datatable .= '</td></tr>'; |
|
$itemcount ++; |
|
} |
|
} |
|
return ($datatable,$itemcount); |
|
} |
|
|
|
sub print_ssl { |
|
my ($position,$dom,$settings,$rowtotal) = @_; |
|
my ($css_class,$datatable); |
|
my $itemcount = 1; |
|
if ($position eq 'top') { |
|
my $primary_id = &Apache::lonnet::domain($dom,'primary'); |
|
my $intdom = &Apache::lonnet::internet_dom($primary_id); |
|
my $same_institution; |
|
if ($intdom ne '') { |
|
my $internet_names = &Apache::lonnet::get_internet_names($Apache::lonnet::perlvar{'lonHostID'}); |
|
if (ref($internet_names) eq 'ARRAY') { |
|
if (grep(/^\Q$intdom\E$/,@{$internet_names})) { |
|
$same_institution = 1; |
|
} |
|
} |
|
} |
|
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
$datatable = '<tr'.$css_class.'><td colspan="2">'; |
|
if ($same_institution) { |
|
my %domservers = &Apache::lonnet::get_servers($dom); |
|
$datatable .= &LONCAPA::SSL::print_certstatus(\%domservers,'web','domprefs'); |
|
} else { |
|
$datatable .= &mt("You need to be logged into one of your own domain's servers to display information about the status of LON-CAPA SSL certificates."); |
|
} |
|
$datatable .= '</td></tr>'; |
|
$itemcount ++; |
|
} else { |
|
my %titles = &ssl_titles(); |
|
my (%by_ip,%by_location,@intdoms,@instdoms); |
|
&build_location_hashes(\@intdoms,\%by_ip,\%by_location,\@instdoms); |
|
my @alldoms = &Apache::lonnet::all_domains(); |
|
my %serverhomes = %Apache::lonnet::serverhomeIDs; |
|
my @domservers = &Apache::lonnet::get_servers($dom); |
|
my %servers = &Apache::lonnet::internet_dom_servers($dom); |
|
my %altids = &id_for_thisdom(%servers); |
|
if (($position eq 'connto') || ($position eq 'connfrom')) { |
|
my $legacy; |
|
unless (ref($settings) eq 'HASH') { |
|
my $name; |
|
if ($position eq 'connto') { |
|
$name = 'loncAllowInsecure'; |
|
} else { |
|
$name = 'londAllowInsecure'; |
|
} |
|
my $primarylibserv = &Apache::lonnet::domain($dom,'primary'); |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
if (($primarylibserv ne '') && (!grep(/^\Q$primarylibserv\E$/,@ids))) { |
|
my %what = ( |
|
$name => 1, |
|
); |
|
my ($result,$returnhash) = |
|
&Apache::lonnet::get_remote_globals($primarylibserv,\%what); |
|
if ($result eq 'ok') { |
|
if (ref($returnhash) eq 'HASH') { |
|
$legacy = $returnhash->{$name}; |
|
} |
|
} |
|
} else { |
|
$legacy = $Apache::lonnet::perlvar{$name}; |
|
} |
|
} |
|
foreach my $type ('dom','intdom','other') { |
|
my %checked; |
|
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
$datatable .= '<tr'.$css_class.'><td>'.$titles{$type}.'</td>'. |
|
'<td class="LC_right_item">'; |
|
my $skip; |
|
if ($type eq 'dom') { |
|
unless (keys(%servers) > 1) { |
|
$datatable .= &mt('Nothing to set here, as there are no other servers/VMs'); |
|
$skip = 1; |
|
} |
|
} |
|
if ($type eq 'intdom') { |
|
unless (@instdoms > 1) { |
|
$datatable .= &mt('Nothing to set here, as there are no other domains for this institution'); |
|
$skip = 1; |
|
} |
|
} elsif ($type eq 'other') { |
|
if (keys(%by_location) == 0) { |
|
$datatable .= &mt('Nothing to set here, as there are no other institutions'); |
|
$skip = 1; |
|
} |
|
} |
|
unless ($skip) { |
|
$checked{'yes'} = ' checked="checked"'; |
|
if (ref($settings) eq 'HASH') { |
|
if (ref($settings->{$position}) eq 'HASH') { |
|
if ($settings->{$position}->{$type} =~ /^(no|req)$/) { |
|
$checked{$1} = $checked{'yes'}; |
|
delete($checked{'yes'}); |
|
} |
|
} |
|
} else { |
|
if ($legacy == 0) { |
|
$checked{'req'} = $checked{'yes'}; |
|
delete($checked{'yes'}); |
|
} |
|
} |
|
foreach my $option ('no','yes','req') { |
|
$datatable .= '<span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="'.$position.'_'.$type.'" '. |
|
'value="'.$option.'"'.$checked{$option}.' />'.$titles{$option}. |
|
'</label></span>'.(' 'x2); |
} |
} |
$datatable .= '</tr></table>'; |
|
} |
} |
$datatable .= '</td></tr>'; |
$datatable .= '</td></tr>'; |
|
$itemcount ++; |
|
} |
|
} else { |
|
my $prefix = 'replication'; |
|
my @types = ('certreq','nocertreq'); |
|
if (keys(%by_location) == 0) { |
|
$datatable .= '<tr'.$css_class.'><td>'. |
|
&mt('Nothing to set here, as there are no other institutions'). |
|
'</td></tr>'; |
$itemcount ++; |
$itemcount ++; |
|
} else { |
|
($datatable,$itemcount) = |
|
&rules_by_location($settings,$prefix,\%by_location,\%by_ip,\@types,\%titles); |
} |
} |
} |
} |
} |
} |
Line 4728 sub print_usersessions {
|
Line 4856 sub print_usersessions {
|
return $datatable; |
return $datatable; |
} |
} |
|
|
|
sub ssl_titles { |
|
return &Apache::lonlocal::texthash ( |
|
dom => 'LON-CAPA servers/VMs from same domain', |
|
intdom => 'LON-CAPA servers/VMs from same "internet" domain', |
|
other => 'External LON-CAPA servers/VMs', |
|
connto => 'Connections to other servers', |
|
connfrom => 'Connections from other servers', |
|
replication => 'Replicating content to other institutions', |
|
certreq => 'Client certificate required, but specific domains exempt', |
|
nocertreq => 'No client certificate required, except for specific domains', |
|
no => 'SSL not used', |
|
yes => 'SSL Optional (used if available)', |
|
req => 'SSL Required', |
|
); |
|
} |
|
|
|
sub print_trust { |
|
my ($prefix,$dom,$settings,$rowtotal) = @_; |
|
my ($css_class,$datatable,%checked,%choices); |
|
my (%by_ip,%by_location,@intdoms,@instdoms); |
|
&build_location_hashes(\@intdoms,\%by_ip,\%by_location,\@instdoms); |
|
my $itemcount = 1; |
|
my %titles = &trust_titles(); |
|
my @types = ('exc','inc'); |
|
if ($prefix eq 'top') { |
|
$prefix = 'content'; |
|
} elsif ($prefix eq 'bottom') { |
|
$prefix = 'msg'; |
|
} |
|
($datatable,$itemcount) = &rules_by_location($settings,$prefix,\%by_location,\%by_ip,\@types,\%titles); |
|
$$rowtotal += $itemcount; |
|
return $datatable; |
|
} |
|
|
|
sub trust_titles { |
|
return &Apache::lonlocal::texthash( |
|
content => "Access to this domain's content by others", |
|
shared => "Access to other domain's content by this domain", |
|
enroll => "Enrollment in this domain's courses by others", |
|
othcoau => "Co-author roles in this domain for others", |
|
coaurem => "Co-author roles for this domain's users elsewhere", |
|
domroles => "Domain roles in this domain assignable to others", |
|
catalog => "Course Catalog for this domain displayed elsewhere", |
|
reqcrs => "Requests for creation of courses in this domain by others", |
|
msg => "Users in other domains can send messages to this domain", |
|
exc => "Allow all, but exclude specific domains", |
|
inc => "Deny all, but include specific domains", |
|
); |
|
} |
|
|
sub build_location_hashes { |
sub build_location_hashes { |
my ($intdoms,$by_ip,$by_location) = @_; |
my ($intdoms,$by_ip,$by_location,$instdoms) = @_; |
return unless((ref($intdoms) eq 'ARRAY') && (ref($by_ip) eq 'HASH') && |
return unless((ref($intdoms) eq 'ARRAY') && (ref($by_ip) eq 'HASH') && |
(ref($by_location) eq 'HASH')); |
(ref($by_location) eq 'HASH') && (ref($instdoms) eq 'ARRAY')); |
my %iphost = &Apache::lonnet::get_iphost(); |
my %iphost = &Apache::lonnet::get_iphost(); |
my $primary_id = &Apache::lonnet::domain($env{'request.role.domain'},'primary'); |
my $primary_id = &Apache::lonnet::domain($env{'request.role.domain'},'primary'); |
my $primary_ip = &Apache::lonnet::get_host_ip($primary_id); |
my $primary_ip = &Apache::lonnet::get_host_ip($primary_id); |
Line 4748 sub build_location_hashes {
|
Line 4926 sub build_location_hashes {
|
foreach my $id (@{$iphost{$ip}}) { |
foreach my $id (@{$iphost{$ip}}) { |
my $location = &Apache::lonnet::internet_dom($id); |
my $location = &Apache::lonnet::internet_dom($id); |
if ($location) { |
if ($location) { |
next if (grep(/^\Q$location\E$/,@{$intdoms})); |
if (grep(/^\Q$location\E$/,@{$intdoms})) { |
|
my $dom = &Apache::lonnet::host_domain($id); |
|
unless (grep(/^\Q$dom\E/,@{$instdoms})) { |
|
push(@{$instdoms},$dom); |
|
} |
|
next; |
|
} |
if (ref($by_ip->{$ip}) eq 'ARRAY') { |
if (ref($by_ip->{$ip}) eq 'ARRAY') { |
unless(grep(/^\Q$location\E$/,@{$by_ip->{$ip}})) { |
unless(grep(/^\Q$location\E$/,@{$by_ip->{$ip}})) { |
push(@{$by_ip->{$ip}},$location); |
push(@{$by_ip->{$ip}},$location); |
Line 5055 sub print_loadbalancing {
|
Line 5239 sub print_loadbalancing {
|
my $disabled_div_style = 'display: block'; |
my $disabled_div_style = 'display: block'; |
my $homedom_div_style = 'display: none'; |
my $homedom_div_style = 'display: none'; |
$datatable .= '<tr class="'.$css_class[$cssidx].'">'. |
$datatable .= '<tr class="'.$css_class[$cssidx].'">'. |
'<td rowspan="'.$rownum.'" valign="top">'. |
'<td rowspan="'.$rownum.'" style="vertical-align: top">'. |
'<p>'; |
'<p>'; |
if ($lonhost eq '') { |
if ($lonhost eq '') { |
$datatable .= '<span class="LC_nobreak">'; |
$datatable .= '<span class="LC_nobreak">'; |
Line 5088 sub print_loadbalancing {
|
Line 5272 sub print_loadbalancing {
|
$homedom_div_style = 'display: block'; |
$homedom_div_style = 'display: block'; |
} |
} |
} |
} |
$datatable .= '</p></td><td rowspan="'.$rownum.'" valign="top">'. |
$datatable .= '</p></td><td rowspan="'.$rownum.'" style="vertical-align: top">'. |
'<div id="loadbalancing_disabled_'.$balnum.'" style="'. |
'<div id="loadbalancing_disabled_'.$balnum.'" style="'. |
$disabled_div_style.'">'.$disabledtext.'</div>'."\n". |
$disabled_div_style.'">'.$disabledtext.'</div>'."\n". |
'<div id="loadbalancing_targets_'.$balnum.'" style="'.$targets_div_style.'">'.&mt('Offloads to:').'<br />'; |
'<div id="loadbalancing_targets_'.$balnum.'" style="'.$targets_div_style.'">'.&mt('Offloads to:').'<br />'; |
Line 5303 sub loadbalance_rule_row {
|
Line 5487 sub loadbalance_rule_row {
|
$space = '<div display="inline-block"> </div>'; |
$space = '<div display="inline-block"> </div>'; |
} |
} |
my $output = |
my $output = |
'<tr class="'.$css_class.'" id="balanceruletr_'.$balnum.'_'.$num.'"><td valign="top">'.$space. |
'<tr class="'.$css_class.'" id="balanceruletr_'.$balnum.'_'.$num.'"><td style="vertical-align: top">'.$space. |
'<div id="balanceruletitle_'.$balnum.'_'.$type.'" style="'.$style.'">'.$title.'</div></td>'."\n". |
'<div id="balanceruletitle_'.$balnum.'_'.$type.'" style="'.$style.'">'.$title.'</div></td>'."\n". |
'<td valaign="top">'.$space. |
'<td valaign="top">'.$space. |
'<div id="balancerule_'.$balnum.'_'.$type.'" style="'.$style.'">'."\n"; |
'<div id="balancerule_'.$balnum.'_'.$type.'" style="'.$style.'">'."\n"; |
Line 5386 sub contact_titles {
|
Line 5570 sub contact_titles {
|
'adminemail' => 'Default Server Admin E-mail address', |
'adminemail' => 'Default Server Admin E-mail address', |
'errormail' => 'Error reports to be e-mailed to', |
'errormail' => 'Error reports to be e-mailed to', |
'packagesmail' => 'Package update alerts to be e-mailed to', |
'packagesmail' => 'Package update alerts to be e-mailed to', |
'helpdeskmail' => "Helpdesk requests from all users in this domain", |
'helpdeskmail' => "Helpdesk requests for this domain's users", |
'otherdomsmail' => 'Helpdesk requests from users in other (unconfigured) domains', |
'otherdomsmail' => 'Helpdesk requests for other (unconfigured) domains', |
'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)', |
'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)', |
'requestsmail' => 'E-mail from course requests requiring approval', |
'requestsmail' => 'E-mail from course requests requiring approval', |
'updatesmail' => 'E-mail from nightly check of LON-CAPA module integrity/updates', |
'updatesmail' => 'E-mail from nightly check of LON-CAPA module integrity/updates', |
Line 5438 sub tool_titles {
|
Line 5622 sub tool_titles {
|
unofficial => 'Unofficial courses', |
unofficial => 'Unofficial courses', |
community => 'Communities', |
community => 'Communities', |
textbook => 'Textbook courses', |
textbook => 'Textbook courses', |
|
placement => 'Placement tests', |
); |
); |
return %titles; |
return %titles; |
} |
} |
Line 5448 sub courserequest_titles {
|
Line 5633 sub courserequest_titles {
|
unofficial => 'Unofficial', |
unofficial => 'Unofficial', |
community => 'Communities', |
community => 'Communities', |
textbook => 'Textbook', |
textbook => 'Textbook', |
|
placement => 'Placement tests', |
norequest => 'Not allowed', |
norequest => 'Not allowed', |
approval => 'Approval by Dom. Coord.', |
approval => 'Approval by Dom. Coord.', |
validate => 'With validation', |
validate => 'With validation', |
Line 5538 sub print_usercreation {
|
Line 5724 sub print_usercreation {
|
} |
} |
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td><span class="LC_nobreak">'.$lt{$item}. |
'<td><span class="LC_nobreak">'.$lt{$item}. |
'</span></td><td align="right">'; |
'</span></td><td style="text-align: right">'; |
my @options = ('any'); |
my @options = ('any'); |
if (ref($rules) eq 'HASH') { |
if (ref($rules) eq 'HASH') { |
if (keys(%{$rules}) > 0) { |
if (keys(%{$rules}) > 0) { |
Line 5612 sub print_usercreation {
|
Line 5798 sub print_usercreation {
|
|
|
sub print_selfcreation { |
sub print_selfcreation { |
my ($position,$dom,$settings,$rowtotal) = @_; |
my ($position,$dom,$settings,$rowtotal) = @_; |
my (@selfcreate,$createsettings,$processing,$datatable); |
my (@selfcreate,$createsettings,$processing,$emailoptions,$emailverified, |
|
$emaildomain,$datatable); |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
if (ref($settings->{'cancreate'}) eq 'HASH') { |
if (ref($settings->{'cancreate'}) eq 'HASH') { |
$createsettings = $settings->{'cancreate'}; |
$createsettings = $settings->{'cancreate'}; |
Line 5629 sub print_selfcreation {
|
Line 5816 sub print_selfcreation {
|
if (ref($createsettings->{'selfcreateprocessing'}) eq 'HASH') { |
if (ref($createsettings->{'selfcreateprocessing'}) eq 'HASH') { |
$processing = $createsettings->{'selfcreateprocessing'}; |
$processing = $createsettings->{'selfcreateprocessing'}; |
} |
} |
|
if (ref($createsettings->{'emailoptions'}) eq 'HASH') { |
|
$emailoptions = $createsettings->{'emailoptions'}; |
|
} |
|
if (ref($createsettings->{'emailverified'}) eq 'HASH') { |
|
$emailverified = $createsettings->{'emailverified'}; |
|
} |
|
if (ref($createsettings->{'emaildomain'}) eq 'HASH') { |
|
$emaildomain = $createsettings->{'emaildomain'}; |
|
} |
} |
} |
} |
} |
} |
} |
Line 5719 sub print_selfcreation {
|
Line 5915 sub print_selfcreation {
|
} |
} |
} else { |
} else { |
my %choices = &Apache::lonlocal::texthash ( |
my %choices = &Apache::lonlocal::texthash ( |
cancreate_email => 'E-mail address as username', |
'cancreate_email' => 'Non-institutional username (via e-mail verification)', |
); |
); |
my @toggles = sort(keys(%choices)); |
my @toggles = sort(keys(%choices)); |
my %defaultchecked = ( |
my %defaultchecked = ( |
'cancreate_email' => 'off', |
'cancreate_email' => 'off', |
); |
); |
my $itemcount = 0; |
my $customclass = 'LC_selfcreate_email'; |
|
my $classprefix = 'LC_canmodify_emailusername_'; |
|
my $optionsprefix = 'LC_options_emailusername_'; |
my $display = 'none'; |
my $display = 'none'; |
|
my $rowstyle = 'display:none'; |
if (grep(/^\Qemail\E$/,@selfcreate)) { |
if (grep(/^\Qemail\E$/,@selfcreate)) { |
$display = 'block'; |
$display = 'block'; |
|
$rowstyle = 'display:table-row'; |
} |
} |
my $onclick = "toggleDisplay(this.form,'emailoptions');"; |
my $onclick = "toggleRows(this.form,'cancreate_email','selfassign','$customclass','$classprefix','$optionsprefix');"; |
my $additional = '<div id="emailoptions" style="display: '.$display.'">'; |
($datatable,$$rowtotal) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked, |
|
\%choices,$$rowtotal,$onclick); |
|
$datatable .= &print_requestmail($dom,'selfcreation',$createsettings,$rowtotal,$customclass, |
|
$rowstyle); |
|
$$rowtotal ++; |
|
$datatable .= &captcha_choice('cancreate',$createsettings,$$rowtotal,$customclass, |
|
$rowstyle); |
|
$$rowtotal ++; |
|
my (@ordered,@posstypes,%usertypeshash); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
my (@ordered,%usertypeshash); |
my ($emailrules,$emailruleorder) = |
if (ref($domdefaults{'inststatusguest'}) eq 'ARRAY') { |
&Apache::lonnet::inst_userrules($dom,'email'); |
@ordered = @{$domdefaults{'inststatusguest'}}; |
my $primary_id = &Apache::lonnet::domain($dom,'primary'); |
} |
my $intdom = &Apache::lonnet::internet_dom($primary_id); |
if (@ordered) { |
if (ref($types) eq 'ARRAY') { |
unless (grep(/^default$/,@ordered)) { |
@posstypes = @{$types}; |
push(@ordered,'default'); |
} |
|
if (@posstypes) { |
|
unless (grep(/^default$/,@posstypes)) { |
|
push(@posstypes,'default'); |
} |
} |
if (ref($usertypes) eq 'HASH') { |
if (ref($usertypes) eq 'HASH') { |
%usertypeshash = %{$usertypes}; |
%usertypeshash = %{$usertypes}; |
} |
} |
|
my $currassign; |
|
if (ref($domdefaults{'inststatusguest'}) eq 'ARRAY') { |
|
$currassign = { |
|
selfassign => $domdefaults{'inststatusguest'}, |
|
}; |
|
@ordered = @{$domdefaults{'inststatusguest'}}; |
|
} else { |
|
$currassign = { selfassign => [] }; |
|
} |
|
my $onclicktypes = "toggleDataRow(this.form,'selfassign','$customclass','$optionsprefix',);". |
|
"toggleDataRow(this.form,'selfassign','$customclass','$classprefix',1);"; |
|
$datatable .= &insttypes_row($currassign,$types,$usertypes,$dom, |
|
$numinrow,$othertitle,'selfassign', |
|
$rowtotal,$onclicktypes,$customclass, |
|
$rowstyle); |
|
$$rowtotal ++; |
$usertypeshash{'default'} = $othertitle; |
$usertypeshash{'default'} = $othertitle; |
$additional .= '<table><tr>'; |
foreach my $status (@posstypes) { |
foreach my $status (@ordered) { |
my $css_class; |
$additional .= '<th>'.$usertypeshash{$status}.'</th>'; |
if ($$rowtotal%2) { |
} |
$css_class = 'LC_odd_row '; |
$additional .= '</tr><tr>'; |
} |
foreach my $status (@ordered) { |
$css_class .= $customclass; |
$additional .= '<td>'.&email_as_username($rowtotal,$processing,$status).'</td>'; |
my $rowid = $optionsprefix.$status; |
|
my $hidden = 1; |
|
my $currstyle = 'display:none'; |
|
if (grep(/^\Q$status\E$/,@ordered)) { |
|
$currstyle = $rowstyle; |
|
$hidden = 0; |
|
} |
|
$datatable .= &noninst_users($processing,$emailverified,$emailoptions,$emaildomain, |
|
$emailrules,$emailruleorder,$settings,$status,$rowid, |
|
$usertypeshash{$status},$css_class,$currstyle,$intdom); |
|
unless ($hidden) { |
|
$$rowtotal ++; |
|
} |
} |
} |
$additional .= '</tr></table>'; |
|
} else { |
} else { |
|
my $css_class; |
|
if ($$rowtotal%2) { |
|
$css_class = 'LC_odd_row '; |
|
} |
|
$css_class .= $customclass; |
$usertypeshash{'default'} = $othertitle; |
$usertypeshash{'default'} = $othertitle; |
$additional .= &email_as_username($rowtotal,$processing); |
$datatable .= &noninst_users($processing,$emailverified,$emailoptions,$emaildomain, |
|
$emailrules,$emailruleorder,$settings,'default','', |
|
$othertitle,$css_class,$rowstyle,$intdom); |
|
$$rowtotal ++; |
} |
} |
$additional .= '</div>'."\n"; |
|
|
|
($datatable,$itemcount) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked, |
|
\%choices,$$rowtotal,$onclick,$additional); |
|
$$rowtotal ++; |
|
$datatable .= &print_requestmail($dom,'selfcreation',$createsettings,$rowtotal); |
|
$$rowtotal ++; |
|
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info(); |
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info(); |
$numinrow = 1; |
$numinrow = 1; |
foreach my $status (@ordered) { |
if (@posstypes) { |
$datatable .= &modifiable_userdata_row('cancreate','emailusername_'.$status,$settings, |
foreach my $status (@posstypes) { |
$numinrow,$$rowtotal,\%usertypeshash,$infofields,$infotitles); |
my $rowid = $classprefix.$status; |
$$rowtotal ++; |
my $datarowstyle = 'display:none'; |
} |
if (grep(/^\Q$status\E$/,@ordered)) { |
my ($emailrules,$emailruleorder) = |
$datarowstyle = $rowstyle; |
&Apache::lonnet::inst_userrules($dom,'email'); |
} |
if (ref($emailrules) eq 'HASH') { |
$datatable .= &modifiable_userdata_row('cancreate','emailusername_'.$status,$settings, |
if (keys(%{$emailrules}) > 0) { |
$numinrow,$$rowtotal,\%usertypeshash,$infofields, |
$datatable .= &user_formats_row('email',$settings,$emailrules, |
$infotitles,$rowid,$customclass,$datarowstyle); |
$emailruleorder,$numinrow,$$rowtotal); |
unless ($datarowstyle eq 'display:none') { |
$$rowtotal ++; |
$$rowtotal ++; |
|
} |
} |
} |
|
} else { |
|
$datatable .= &modifiable_userdata_row('cancreate','emailusername_default',$settings, |
|
$numinrow,$$rowtotal,\%usertypeshash,$infofields, |
|
$infotitles,'',$customclass,$rowstyle); |
} |
} |
$datatable .= &captcha_choice('cancreate',$createsettings,$$rowtotal); |
|
} |
} |
return $datatable; |
return $datatable; |
} |
} |
|
|
sub email_as_username { |
sub selfcreate_javascript { |
my ($rowtotal,$processing,$type) = @_; |
return <<"ENDSCRIPT"; |
my %choices = |
|
&Apache::lonlocal::texthash ( |
<script type="text/javascript"> |
automatic => 'Automatic approval', |
// <![CDATA[ |
approval => 'Queued for approval', |
|
); |
function toggleRows(form,radio,checkbox,target,prefix,altprefix) { |
my $output; |
var x = document.getElementsByClassName(target); |
foreach my $option ('automatic','approval') { |
var insttypes = 0; |
my $checked; |
var insttypeRegExp = new RegExp(prefix); |
if (ref($processing) eq 'HASH') { |
if ((x.length != undefined) && (x.length > 0)) { |
if ($type eq '') { |
if (form.elements[radio].length != undefined) { |
if (!exists($processing->{'default'})) { |
for (var i=0; i<form.elements[radio].length; i++) { |
if ($option eq 'automatic') { |
if (form.elements[radio][i].checked) { |
$checked = ' checked="checked"'; |
if (form.elements[radio][i].value == 1) { |
|
for (var j=0; j<x.length; j++) { |
|
if (x[j].id == 'undefined') { |
|
x[j].style.display = 'table-row'; |
|
} else if (insttypeRegExp.test(x[j].id)) { |
|
insttypes ++; |
|
} else { |
|
x[j].style.display = 'table-row'; |
|
} |
|
} |
|
} else { |
|
for (var j=0; j<x.length; j++) { |
|
x[j].style.display = 'none'; |
|
} |
} |
} |
|
break; |
|
} |
|
} |
|
if (insttypes > 0) { |
|
toggleDataRow(form,checkbox,target,altprefix); |
|
toggleDataRow(form,checkbox,target,prefix,1); |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
function toggleDataRow(form,checkbox,target,prefix,docount) { |
|
if (form.elements[checkbox].length != undefined) { |
|
var count = 0; |
|
if (docount) { |
|
for (var i=0; i<form.elements[checkbox].length; i++) { |
|
if (form.elements[checkbox][i].checked) { |
|
count ++; |
|
} |
|
} |
|
} |
|
for (var i=0; i<form.elements[checkbox].length; i++) { |
|
var type = form.elements[checkbox][i].value; |
|
if (document.getElementById(prefix+type)) { |
|
if (form.elements[checkbox][i].checked) { |
|
document.getElementById(prefix+type).style.display = 'table-row'; |
|
if (count % 2 == 1) { |
|
document.getElementById(prefix+type).className = target+' LC_odd_row'; |
|
} else { |
|
document.getElementById(prefix+type).className = target; |
|
} |
|
count ++; |
} else { |
} else { |
if ($processing->{'default'} eq $option) { |
document.getElementById(prefix+type).style.display = 'none'; |
$checked = ' checked="checked"'; |
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
function toggleEmailOptions(form,radio,prefix,altprefix,status) { |
|
var caller = radio+'_'+status; |
|
if (form.elements[caller].length != undefined) { |
|
for (var i=0; i<form.elements[caller].length; i++) { |
|
if (form.elements[caller][i].checked) { |
|
if (document.getElementById(altprefix+'_inst_'+status)) { |
|
var curr = form.elements[caller][i].value; |
|
if (prefix) { |
|
document.getElementById(prefix+'_'+status).style.display = 'none'; |
|
} |
|
document.getElementById(altprefix+'_inst_'+status).style.display = 'none'; |
|
document.getElementById(altprefix+'_noninst_'+status).style.display = 'none'; |
|
if (curr == 'custom') { |
|
if (prefix) { |
|
document.getElementById(prefix+'_'+status).style.display = 'inline'; |
|
} |
|
} else if (curr == 'inst') { |
|
document.getElementById(altprefix+'_inst_'+status).style.display = 'inline'; |
|
} else if (curr == 'noninst') { |
|
document.getElementById(altprefix+'_noninst_'+status).style.display = 'inline'; |
} |
} |
|
break; |
} |
} |
} else { |
} |
if (!exists($processing->{$type})) { |
} |
if ($option eq 'automatic') { |
} |
$checked = ' checked="checked"'; |
} |
|
|
|
// ]]> |
|
</script> |
|
|
|
ENDSCRIPT |
|
} |
|
|
|
sub noninst_users { |
|
my ($processing,$emailverified,$emailoptions,$emaildomain,$emailrules, |
|
$emailruleorder,$settings,$type,$rowid,$typetitle,$css_class,$rowstyle,$intdom) = @_; |
|
my $class = 'LC_left_item'; |
|
if ($css_class) { |
|
$css_class = ' class="'.$css_class.'"'; |
|
} |
|
if ($rowid) { |
|
$rowid = ' id="'.$rowid.'"'; |
|
} |
|
if ($rowstyle) { |
|
$rowstyle = ' style="'.$rowstyle.'"'; |
|
} |
|
my ($output,$description); |
|
if ($type eq 'default') { |
|
$description = &mt('Requests for: [_1]',$typetitle); |
|
} else { |
|
$description = &mt('Requests for: [_1] (status self-reported)',$typetitle); |
|
} |
|
$output = '<tr'.$css_class.$rowid.$rowstyle.'>'. |
|
"<td>$description</td>\n". |
|
'<td class="'.$class.'" colspan="2">'. |
|
'<table><tr>'; |
|
my %headers = &Apache::lonlocal::texthash( |
|
approve => 'Processing', |
|
email => 'E-mail', |
|
username => 'Username', |
|
); |
|
foreach my $item ('approve','email','username') { |
|
$output .= '<th>'.$headers{$item}.'</th>'; |
|
} |
|
$output .= '</tr><tr>'; |
|
foreach my $item ('approve','email','username') { |
|
$output .= '<td style="vertical-align: top">'; |
|
my (%choices,@options,$hashref,$defoption,$name,$onclick,$hascustom); |
|
if ($item eq 'approve') { |
|
%choices = &Apache::lonlocal::texthash ( |
|
automatic => 'Automatically approved', |
|
approval => 'Queued for approval', |
|
); |
|
@options = ('automatic','approval'); |
|
$hashref = $processing; |
|
$defoption = 'automatic'; |
|
$name = 'cancreate_emailprocess_'.$type; |
|
} elsif ($item eq 'email') { |
|
%choices = &Apache::lonlocal::texthash ( |
|
any => 'Any e-mail', |
|
inst => 'Institutional only', |
|
noninst => 'Non-institutional only', |
|
custom => 'Custom restrictions', |
|
); |
|
@options = ('any','inst','noninst'); |
|
my $showcustom; |
|
if (ref($emailrules) eq 'HASH') { |
|
if (keys(%{$emailrules}) > 0) { |
|
push(@options,'custom'); |
|
$showcustom = 'cancreate_emailrule'; |
|
if (ref($settings) eq 'HASH') { |
|
if (ref($settings->{'email_rule'}) eq 'ARRAY') { |
|
foreach my $rule (@{$settings->{'email_rule'}}) { |
|
if (exists($emailrules->{$rule})) { |
|
$hascustom ++; |
|
} |
|
} |
|
} elsif (ref($settings->{'email_rule'}) eq 'HASH') { |
|
if (ref($settings->{'email_rule'}{$type}) eq 'ARRAY') { |
|
foreach my $rule (@{$settings->{'email_rule'}{$type}}) { |
|
if (exists($emailrules->{$rule})) { |
|
$hascustom ++; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
$onclick = ' onclick="toggleEmailOptions(this.form,'."'cancreate_emailoptions','$showcustom',". |
|
"'cancreate_emaildomain','$type'".');"'; |
|
$hashref = $emailoptions; |
|
$defoption = 'any'; |
|
$name = 'cancreate_emailoptions_'.$type; |
|
} elsif ($item eq 'username') { |
|
%choices = &Apache::lonlocal::texthash ( |
|
all => 'Same as e-mail', |
|
first => 'Omit @domain', |
|
free => 'Free to choose', |
|
); |
|
@options = ('all','first','free'); |
|
$hashref = $emailverified; |
|
$defoption = 'all'; |
|
$name = 'cancreate_usernameoptions_'.$type; |
|
} |
|
foreach my $option (@options) { |
|
my $checked; |
|
if (ref($hashref) eq 'HASH') { |
|
if ($type eq '') { |
|
if (!exists($hashref->{'default'})) { |
|
if ($option eq $defoption) { |
|
$checked = ' checked="checked"'; |
|
} |
|
} else { |
|
if ($hashref->{'default'} eq $option) { |
|
$checked = ' checked="checked"'; |
|
} |
} |
} |
} else { |
} else { |
if ($processing->{$type} eq $option) { |
if (!exists($hashref->{$type})) { |
$checked = ' checked="checked"'; |
if ($option eq $defoption) { |
|
$checked = ' checked="checked"'; |
|
} |
|
} else { |
|
if ($hashref->{$type} eq $option) { |
|
$checked = ' checked="checked"'; |
|
} |
} |
} |
} |
} |
|
} elsif (($item eq 'email') && ($hascustom)) { |
|
if ($option eq 'custom') { |
|
$checked = ' checked="checked"'; |
|
} |
|
} elsif ($option eq $defoption) { |
|
$checked = ' checked="checked"'; |
|
} |
|
$output .= '<span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="'.$name.'"'. |
|
$checked.' value="'.$option.'"'.$onclick.' />'. |
|
$choices{$option}.'</label></span><br />'; |
|
if ($item eq 'email') { |
|
if ($option eq 'custom') { |
|
my $id = 'cancreate_emailrule_'.$type; |
|
my $display = 'none'; |
|
if ($checked) { |
|
$display = 'inline'; |
|
} |
|
my $numinrow = 2; |
|
$output .= '<fieldset id="'.$id.'" style="display:'.$display.';">'. |
|
'<legend>'.&mt('Disallow').'</legend><table>'. |
|
&user_formats_row('email',$settings,$emailrules, |
|
$emailruleorder,$numinrow,'',$type); |
|
'</table></fieldset>'; |
|
} elsif (($option eq 'inst') || ($option eq 'noninst')) { |
|
my %text = &Apache::lonlocal::texthash ( |
|
inst => 'must end:', |
|
noninst => 'cannot end:', |
|
); |
|
my $value; |
|
if (ref($emaildomain) eq 'HASH') { |
|
if (ref($emaildomain->{$type}) eq 'HASH') { |
|
$value = $emaildomain->{$type}->{$option}; |
|
} |
|
} |
|
if ($value eq '') { |
|
$value = '@'.$intdom; |
|
} |
|
my $condition = 'cancreate_emaildomain_'.$option.'_'.$type; |
|
my $display = 'none'; |
|
if ($checked) { |
|
$display = 'inline'; |
|
} |
|
$output .= '<div id="'.$condition.'" style="display:'.$display.';">'. |
|
'<span class="LC_domprefs_email">'.$text{$option}.'</span> '. |
|
'<input type="text" name="'.$condition.'" value="'.$value.'" size="10" />'. |
|
'</div>'; |
|
} |
} |
} |
} elsif ($option eq 'automatic') { |
|
$checked = ' checked="checked"'; |
|
} |
|
my $name = 'cancreate_emailprocess'; |
|
if (($type ne '') && ($type ne 'default')) { |
|
$name .= '_'.$type; |
|
} |
|
$output .= '<span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="'.$name.'"'. |
|
$checked.' value="'.$option.'" />'. |
|
$choices{$option}.'</label></span>'; |
|
if ($type eq '') { |
|
$output .= ' '; |
|
} else { |
|
$output .= '<br />'; |
|
} |
} |
|
$output .= '</td>'."\n"; |
} |
} |
$$rowtotal ++; |
$output .= "</tr></table></td></tr>\n"; |
return $output; |
return $output; |
} |
} |
|
|
sub captcha_choice { |
sub captcha_choice { |
my ($context,$settings,$itemcount) = @_; |
my ($context,$settings,$itemcount,$customcss,$rowstyle) = @_; |
my ($keyentry,$currpub,$currpriv,%checked,$rowname,$pubtext,$privtext, |
my ($keyentry,$currpub,$currpriv,%checked,$rowname,$pubtext,$privtext, |
$vertext,$currver); |
$vertext,$currver); |
my %lt = &captcha_phrases(); |
my %lt = &captcha_phrases(); |
$keyentry = 'hidden'; |
$keyentry = 'hidden'; |
if ($context eq 'cancreate') { |
if ($context eq 'cancreate') { |
Line 5873 sub captcha_choice {
|
Line 6340 sub captcha_choice {
|
} else { |
} else { |
$checked{'original'} = ' checked="checked"'; |
$checked{'original'} = ' checked="checked"'; |
} |
} |
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
my $css_class; |
|
if ($itemcount%2) { |
|
$css_class = 'LC_odd_row'; |
|
} |
|
if ($customcss) { |
|
$css_class .= " $customcss"; |
|
} |
|
$css_class =~ s/^\s+//; |
|
if ($css_class) { |
|
$css_class = ' class="'.$css_class.'"'; |
|
} |
|
if ($rowstyle) { |
|
$css_class .= ' style="'.$rowstyle.'"'; |
|
} |
my $output = '<tr'.$css_class.'>'. |
my $output = '<tr'.$css_class.'>'. |
'<td class="LC_left_item">'.$rowname.'</td><td class="LC_left_item" colspan="2">'."\n". |
'<td class="LC_left_item">'.$rowname.'</td><td class="LC_left_item" colspan="2">'."\n". |
'<table><tr><td>'."\n"; |
'<table><tr><td>'."\n"; |
Line 5892 sub captcha_choice {
|
Line 6372 sub captcha_choice {
|
# specified for use with the key should be broad enough to accommodate all servers in the LON-CAPA domain. |
# specified for use with the key should be broad enough to accommodate all servers in the LON-CAPA domain. |
# |
# |
$output .= '</td></tr>'."\n". |
$output .= '</td></tr>'."\n". |
'<tr><td>'."\n". |
'<tr><td class="LC_zero_height">'."\n". |
'<span class="LC_nobreak"><span id="'.$context.'_recaptchapubtxt">'.$pubtext.'</span> '."\n". |
'<span class="LC_nobreak"><span id="'.$context.'_recaptchapubtxt">'.$pubtext.'</span> '."\n". |
'<input type="'.$keyentry.'" id="'.$context.'_recaptchapub" name="'.$context.'_recaptchapub" value="'. |
'<input type="'.$keyentry.'" id="'.$context.'_recaptchapub" name="'.$context.'_recaptchapub" value="'. |
$currpub.'" size="40" /></span><br />'."\n". |
$currpub.'" size="40" /></span><br />'."\n". |
Line 5908 sub captcha_choice {
|
Line 6388 sub captcha_choice {
|
} |
} |
|
|
sub user_formats_row { |
sub user_formats_row { |
my ($type,$settings,$rules,$ruleorder,$numinrow,$rowcount) = @_; |
my ($type,$settings,$rules,$ruleorder,$numinrow,$rowcount,$status) = @_; |
my $output; |
my $output; |
my %text = ( |
my %text = ( |
'username' => 'new usernames', |
'username' => 'new usernames', |
'id' => 'IDs', |
'id' => 'IDs', |
'email' => 'self-created accounts (e-mail)', |
|
); |
); |
my $css_class = $rowcount%2?' class="LC_odd_row"':''; |
unless ($type eq 'email') { |
$output = '<tr '.$css_class.'>'. |
my $css_class = $rowcount%2?' class="LC_odd_row"':''; |
'<td><span class="LC_nobreak">'; |
$output = '<tr '.$css_class.'>'. |
if ($type eq 'email') { |
'<td><span class="LC_nobreak">'. |
$output .= &mt("Formats disallowed for $text{$type}: "); |
&mt("Format rules to check for $text{$type}: "). |
} else { |
'</td><td class="LC_left_item" colspan="2"><table>'; |
$output .= &mt("Format rules to check for $text{$type}: "); |
|
} |
} |
$output .= '</span></td>'. |
|
'<td class="LC_left_item" colspan="2"><table>'; |
|
my $rem; |
my $rem; |
if (ref($ruleorder) eq 'ARRAY') { |
if (ref($ruleorder) eq 'ARRAY') { |
for (my $i=0; $i<@{$ruleorder}; $i++) { |
for (my $i=0; $i<@{$ruleorder}; $i++) { |
Line 5942 sub user_formats_row {
|
Line 6418 sub user_formats_row {
|
if (grep(/^\Q$ruleorder->[$i]\E$/,@{$settings->{$type.'_rule'}})) { |
if (grep(/^\Q$ruleorder->[$i]\E$/,@{$settings->{$type.'_rule'}})) { |
$check = ' checked="checked" '; |
$check = ' checked="checked" '; |
} |
} |
|
} elsif ((ref($settings->{$type.'_rule'}) eq 'HASH') && ($status ne '')) { |
|
if (ref($settings->{$type.'_rule'}->{$status}) eq 'ARRAY') { |
|
if (grep(/^\Q$ruleorder->[$i]\E$/,@{$settings->{$type.'_rule'}->{$status}})) { |
|
$check = ' checked="checked" '; |
|
} |
|
} |
} |
} |
} |
} |
|
my $name = $type.'_rule'; |
|
if ($type eq 'email') { |
|
$name .= '_'.$status; |
|
} |
$output .= '<td class="LC_left_item">'. |
$output .= '<td class="LC_left_item">'. |
'<span class="LC_nobreak"><label>'. |
'<span class="LC_nobreak"><label>'. |
'<input type="checkbox" name="'.$type.'_rule" '. |
'<input type="checkbox" name="'.$name.'" '. |
'value="'.$ruleorder->[$i].'"'.$check.'/>'. |
'value="'.$ruleorder->[$i].'"'.$check.'/>'. |
$rules->{$ruleorder->[$i]}{'name'}.'</label></span></td>'; |
$rules->{$ruleorder->[$i]}{'name'}.'</label></span></td>'; |
} |
} |
} |
} |
$rem = @{$ruleorder}%($numinrow); |
$rem = @{$ruleorder}%($numinrow); |
} |
} |
my $colsleft = $numinrow - $rem; |
my $colsleft; |
|
if ($rem) { |
|
$colsleft = $numinrow - $rem; |
|
} |
if ($colsleft > 1 ) { |
if ($colsleft > 1 ) { |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
' </td>'; |
' </td>'; |
} elsif ($colsleft == 1) { |
} elsif ($colsleft == 1) { |
$output .= '<td class="LC_left_item"> </td>'; |
$output .= '<td class="LC_left_item"> </td>'; |
} |
} |
$output .= '</tr></table></td></tr>'; |
$output .= '</tr></table>'; |
|
unless ($type eq 'email') { |
|
$output .= '</td></tr>'; |
|
} |
return $output; |
return $output; |
} |
} |
|
|
Line 6174 sub print_defaults {
|
Line 6666 sub print_defaults {
|
$datatable .= '</table>'; |
$datatable .= '</table>'; |
} else { |
} else { |
$datatable .= '<input type="text" name="'.$item.'" value="'. |
$datatable .= '<input type="text" name="'.$item.'" value="'. |
$defaults{$item}.'" size="3" onblur="javascript:warnIntAuth(this);" />'; |
$defaults{$item}.'" size="3" onblur="javascript:warnIntAuth(this);" />'; |
} |
} |
$datatable .= '</td></tr>'; |
$datatable .= '</td></tr>'; |
$rownum ++; |
$rownum ++; |
Line 6182 sub print_defaults {
|
Line 6674 sub print_defaults {
|
} else { |
} else { |
my %defaults; |
my %defaults; |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH') && |
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH')) { |
(ref($settings->{'inststatusguest'}) eq 'ARRAY')) { |
|
my $maxnum = @{$settings->{'inststatusorder'}}; |
my $maxnum = @{$settings->{'inststatusorder'}}; |
for (my $i=0; $i<$maxnum; $i++) { |
for (my $i=0; $i<$maxnum; $i++) { |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
my $item = $settings->{'inststatusorder'}->[$i]; |
my $item = $settings->{'inststatusorder'}->[$i]; |
my $title = $settings->{'inststatustypes'}->{$item}; |
my $title = $settings->{'inststatustypes'}->{$item}; |
my $guestok; |
|
if (grep(/^\Q$item\E$/,@{$settings->{'inststatusguest'}})) { |
|
$guestok = 1; |
|
} |
|
my $chgstr = ' onchange="javascript:reorderTypes(this.form,'."'$item'".');"'; |
my $chgstr = ' onchange="javascript:reorderTypes(this.form,'."'$item'".');"'; |
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td><span class="LC_nobreak">'. |
'<td><span class="LC_nobreak">'. |
Line 6205 sub print_defaults {
|
Line 6692 sub print_defaults {
|
} |
} |
$datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>'; |
$datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>'; |
} |
} |
my ($checkedon,$checkedoff); |
|
$checkedoff = ' checked="checked"'; |
|
if ($guestok) { |
|
$checkedon = $checkedoff; |
|
$checkedoff = ''; |
|
} |
|
$datatable .= '</select> '.&mt('Internal ID:').' <b>'.$item.'</b> '. |
$datatable .= '</select> '.&mt('Internal ID:').' <b>'.$item.'</b> '. |
'<input type="checkbox" name="inststatus_delete" value="'.$item.'" />'. |
'<input type="checkbox" name="inststatus_delete" value="'.$item.'" />'. |
&mt('delete').'</span></td>'. |
&mt('delete').'</span></td>'. |
'<td class="LC_left_item"><span class="LC_nobreak">'.&mt('Name displayed:'). |
'<td class="LC_left_item" colspan="2"><span class="LC_nobreak">'.&mt('Name displayed:'). |
'<input type="text" size="20" name="inststatus_title_'.$item.'" value="'.$title.'" />'. |
'<input type="text" size="20" name="inststatus_title_'.$item.'" value="'.$title.'" />'. |
'</span></td>'. |
'</span></td></tr>'; |
'<td class="LC_right_item"><span class="LC_nobreak">'. |
|
'<label><input type="radio" value="1" name="inststatus_guest_'.$item.'"'.$checkedon.' />'. |
|
&mt('Yes').'</label>'.(' 'x2). |
|
'<label><input type="radio" value="0" name="inststatus_guest_'.$item.'"'.$checkedoff.' />'. |
|
&mt('No').'</label></span></td></tr>'; |
|
} |
} |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
$css_class = $rownum%2?' class="LC_odd_row"':''; |
my $chgstr = ' onchange="javascript:reorderTypes(this.form,'."'addinststatus_pos'".');"'; |
my $chgstr = ' onchange="javascript:reorderTypes(this.form,'."'addinststatus_pos'".');"'; |
Line 6238 sub print_defaults {
|
Line 6714 sub print_defaults {
|
$datatable .= '</select> '.&mt('Internal ID:'). |
$datatable .= '</select> '.&mt('Internal ID:'). |
'<input type="text" size="10" name="addinststatus" value="" />'. |
'<input type="text" size="10" name="addinststatus" value="" />'. |
' '.&mt('(new)'). |
' '.&mt('(new)'). |
'</span></td><td class="LC_left_item"><span class="LC_nobreak">'. |
'</span></td><td class="LC_left_item" colspan="2"><span class="LC_nobreak">'. |
&mt('Name displayed:'). |
&mt('Name displayed:'). |
'<input type="text" size="20" name="addinststatus_title" value="" /></span></td>'. |
'<input type="text" size="20" name="addinststatus_title" value="" /></span></td>'. |
'<td class="LC_right_item"><span class="LC_nobreak">'. |
|
'<label><input type="radio" value="1" name="addinststatus_guest" />'. |
|
&mt('Yes').'</label>'.(' 'x2). |
|
'<label><input type="radio" value="0" name="addinststatus_guest" />'. |
|
&mt('No').'</label></span></td></tr>'; |
|
'</tr>'."\n"; |
'</tr>'."\n"; |
$rownum ++; |
$rownum ++; |
} |
} |
Line 6408 sub print_scantronformat {
|
Line 6879 sub print_scantronformat {
|
} |
} |
$datatable .= '</span></td>'; |
$datatable .= '</span></td>'; |
if (keys(%error) == 0) { |
if (keys(%error) == 0) { |
$datatable .= '<td valign="bottom">'; |
$datatable .= '<td style="vertical-align: bottom">'; |
if (!$switchserver) { |
if (!$switchserver) { |
$datatable .= &mt('Upload:').'<br />'; |
$datatable .= &mt('Upload:').'<br />'; |
} |
} |
Line 6520 sub print_coursecategories {
|
Line 6991 sub print_coursecategories {
|
my $toggle_catscomm_dom = ' checked="checked" '; |
my $toggle_catscomm_dom = ' checked="checked" '; |
my $can_catcomm_comm = ' '; |
my $can_catcomm_comm = ' '; |
my $can_catcomm_dom = ' checked="checked" '; |
my $can_catcomm_dom = ' checked="checked" '; |
|
my $toggle_catsplace_place = ' '; |
|
my $toggle_catsplace_dom = ' checked="checked" '; |
|
my $can_catplace_place = ' '; |
|
my $can_catplace_dom = ' checked="checked" '; |
|
|
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
if ($settings->{'togglecats'} eq 'crs') { |
if ($settings->{'togglecats'} eq 'crs') { |
Line 6538 sub print_coursecategories {
|
Line 7013 sub print_coursecategories {
|
$can_catcomm_comm = $can_catcomm_dom; |
$can_catcomm_comm = $can_catcomm_dom; |
$can_catcomm_dom = ' '; |
$can_catcomm_dom = ' '; |
} |
} |
|
if ($settings->{'togglecatsplace'} eq 'place') { |
|
$toggle_catsplace_place = $toggle_catsplace_dom; |
|
$toggle_catsplace_dom = ' '; |
|
} |
|
if ($settings->{'categorizeplace'} eq 'place') { |
|
$can_catplace_place = $can_catplace_dom; |
|
$can_catplace_dom = ' '; |
|
} |
} |
} |
my %title = &Apache::lonlocal::texthash ( |
my %title = &Apache::lonlocal::texthash ( |
togglecats => 'Show/Hide a course in catalog', |
togglecats => 'Show/Hide a course in catalog', |
togglecatscomm => 'Show/Hide a community in catalog', |
togglecatscomm => 'Show/Hide a community in catalog', |
categorize => 'Assign a category to a course', |
togglecatsplace => 'Show/Hide a placement test in catalog', |
categorizecomm => 'Assign a category to a community', |
categorize => 'Assign a category to a course', |
|
categorizecomm => 'Assign a category to a community', |
|
categorizeplace => 'Assign a category to a placement test', |
); |
); |
my %level = &Apache::lonlocal::texthash ( |
my %level = &Apache::lonlocal::texthash ( |
dom => 'Set in Domain', |
dom => 'Set in Domain', |
crs => 'Set in Course', |
crs => 'Set in Course', |
comm => 'Set in Community', |
comm => 'Set in Community', |
|
place => 'Set in Placement Test', |
); |
); |
$datatable = '<tr class="LC_odd_row">'. |
$datatable = '<tr class="LC_odd_row">'. |
'<td>'.$title{'togglecats'}.'</td>'. |
'<td>'.$title{'togglecats'}.'</td>'. |
Line 6578 sub print_coursecategories {
|
Line 7064 sub print_coursecategories {
|
$can_catcomm_dom.' value="dom" />'.$level{'dom'}.'</label> '. |
$can_catcomm_dom.' value="dom" />'.$level{'dom'}.'</label> '. |
'<label><input type="radio" name="categorizecomm"'. |
'<label><input type="radio" name="categorizecomm"'. |
$can_catcomm_comm.'value="comm" />'.$level{'comm'}.'</label></span></td>'. |
$can_catcomm_comm.'value="comm" />'.$level{'comm'}.'</label></span></td>'. |
|
'</tr><tr>'. |
|
'<td>'.$title{'togglecatsplace'}.'</td>'. |
|
'<td class="LC_right_item"><span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="togglecatsplace"'. |
|
$toggle_catsplace_dom.' value="dom" />'.$level{'dom'}.'</label> '. |
|
'<label><input type="radio" name="togglecatscomm"'. |
|
$toggle_catsplace_place.' value="comm" />'.$level{'place'}.'</label></span></td>'. |
|
'</tr><tr>'. |
|
'<td>'.$title{'categorizeplace'}.'</td>'. |
|
'<td class="LC_right_item"><span class="LC_nobreak">'. |
|
'<label><input type="radio" name="categorizeplace"'. |
|
$can_catplace_dom.' value="dom" />'.$level{'dom'}.'</label> '. |
|
'<label><input type="radio" name="categorizeplace"'. |
|
$can_catplace_place.'value="place" />'.$level{'place'}.'</label></span></td>'. |
'</tr>'; |
'</tr>'; |
$$rowtotal += 4; |
$$rowtotal += 6; |
} else { |
} else { |
my $css_class; |
my $css_class; |
my $itemcount = 1; |
my $itemcount = 1; |
Line 6604 sub print_coursecategories {
|
Line 7104 sub print_coursecategories {
|
my %default_names = ( |
my %default_names = ( |
instcode => &mt('Official courses'), |
instcode => &mt('Official courses'), |
communities => &mt('Communities'), |
communities => &mt('Communities'), |
|
placement => &mt('Placement Tests'), |
); |
); |
|
|
if ((!grep(/^instcode$/,@{$cats[0]})) || |
if ((!grep(/^instcode$/,@{$cats[0]})) || |
($cathash->{'instcode::0'} eq '') || |
($cathash->{'instcode::0'} eq '') || |
(!grep(/^communities$/,@{$cats[0]})) || |
(!grep(/^communities$/,@{$cats[0]})) || |
($cathash->{'communities::0'} eq '')) { |
($cathash->{'communities::0'} eq '') || |
|
(!grep(/^placement$/,@{$cats[0]})) || |
|
($cathash->{'placement::0'} eq '')) { |
$maxnum ++; |
$maxnum ++; |
} |
} |
my $lastidx; |
my $lastidx; |
Line 6630 sub print_coursecategories {
|
Line 7133 sub print_coursecategories {
|
$datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>'; |
$datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>'; |
} |
} |
$datatable .= '</select></span></td><td>'; |
$datatable .= '</select></span></td><td>'; |
if ($parent eq 'instcode' || $parent eq 'communities') { |
if ($parent eq 'instcode' || $parent eq 'communities' || $parent eq 'placement') { |
$datatable .= '<span class="LC_nobreak">' |
$datatable .= '<span class="LC_nobreak">' |
.$default_names{$parent}.'</span>'; |
.$default_names{$parent}.'</span>'; |
if ($parent eq 'instcode') { |
if ($parent eq 'instcode') { |
Line 6653 sub print_coursecategories {
|
Line 7156 sub print_coursecategories {
|
$datatable .= '<label><input type="radio" name="' |
$datatable .= '<label><input type="radio" name="' |
.$parent.'" value="0" />' |
.$parent.'" value="0" />' |
.&mt('Do not display').'</label></span>'; |
.&mt('Do not display').'</label></span>'; |
if ($parent eq 'communities') { |
if (($parent eq 'communities') || ($parent eq 'placement')) { |
$datatable .= '</td></tr></table>'; |
$datatable .= '</td></tr></table>'; |
} |
} |
$datatable .= '</td>'; |
$datatable .= '</td>'; |
Line 6685 sub print_coursecategories {
|
Line 7188 sub print_coursecategories {
|
.'<input type="text" size="20" name="addcategory_name" value="" /></td>' |
.'<input type="text" size="20" name="addcategory_name" value="" /></td>' |
.'</tr>'."\n"; |
.'</tr>'."\n"; |
$itemcount ++; |
$itemcount ++; |
foreach my $default ('instcode','communities') { |
foreach my $default ('instcode','communities','placement') { |
if ((!grep(/^\Q$default\E$/,@{$cats[0]})) || ($cathash->{$default.'::0'} eq '')) { |
if ((!grep(/^\Q$default\E$/,@{$cats[0]})) || ($cathash->{$default.'::0'} eq '')) { |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
my $chgstr = ' onchange="javascript:reorderCats(this.form,'."'','$default"."_pos','$lastidx'".');"'; |
my $chgstr = ' onchange="javascript:reorderCats(this.form,'."'','$default"."_pos','$lastidx'".');"'; |
Line 6774 sub print_serverstatuses {
|
Line 7277 sub print_serverstatuses {
|
|
|
sub serverstatus_pages { |
sub serverstatus_pages { |
return ('userstatus','lonstatus','loncron','server-status','codeversions', |
return ('userstatus','lonstatus','loncron','server-status','codeversions', |
'checksums','clusterstatus','metadata_keywords','metadata_harvest', |
'checksums','clusterstatus','certstatus','metadata_keywords', |
'takeoffline','takeonline','showenv','toggledebug','ping','domconf', |
'metadata_harvest','takeoffline','takeonline','showenv','toggledebug', |
'uniquecodes','diskusage','coursecatalog'); |
'ping','domconf','uniquecodes','diskusage','coursecatalog'); |
} |
} |
|
|
sub defaults_javascript { |
sub defaults_javascript { |
Line 6898 sub coursecategories_javascript {
|
Line 7401 sub coursecategories_javascript {
|
} |
} |
my $instcode_reserved = &mt('The name: [_1] is a reserved category.','"instcode"'); |
my $instcode_reserved = &mt('The name: [_1] is a reserved category.','"instcode"'); |
my $communities_reserved = &mt('The name: [_1] is a reserved category.','"communities"'); |
my $communities_reserved = &mt('The name: [_1] is a reserved category.','"communities"'); |
|
my $placement_reserved = &mt('The name: [_1] is a reserved category.','"placement"'); |
my $choose_again = "\n".&mt('Please use a different name for the new top level category.'); |
my $choose_again = "\n".&mt('Please use a different name for the new top level category.'); |
&js_escape(\$instcode_reserved); |
&js_escape(\$instcode_reserved); |
&js_escape(\$communities_reserved); |
&js_escape(\$communities_reserved); |
|
&js_escape(\$placement_reserved); |
&js_escape(\$choose_again); |
&js_escape(\$choose_again); |
$output = <<"ENDSCRIPT"; |
$output = <<"ENDSCRIPT"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
Line 6970 function categoryCheck(form) {
|
Line 7475 function categoryCheck(form) {
|
alert('$communities_reserved\\n$choose_again'); |
alert('$communities_reserved\\n$choose_again'); |
return false; |
return false; |
} |
} |
|
if (form.elements['addcategory_name'].value == 'placement') { |
|
alert('$placement_reserved\\n$choose_again'); |
|
return false; |
|
} |
return true; |
return true; |
} |
} |
|
|
Line 6986 sub initialize_categories {
|
Line 7495 sub initialize_categories {
|
my %default_names = ( |
my %default_names = ( |
instcode => 'Official courses (with institutional codes)', |
instcode => 'Official courses (with institutional codes)', |
communities => 'Communities', |
communities => 'Communities', |
|
placement => 'Placement Tests', |
); |
); |
my $select0 = ' selected="selected"'; |
my $select0 = ' selected="selected"'; |
my $select1 = ''; |
my $select1 = ''; |
foreach my $default ('instcode','communities') { |
foreach my $default ('instcode','communities','placement') { |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$chgstr = ' onchange="javascript:reorderCats(this.form,'."'',$default"."_pos','0'".');"'; |
$chgstr = ' onchange="javascript:reorderCats(this.form,'."'',$default"."_pos','0'".');"'; |
if ($default eq 'communities') { |
if (($default eq 'communities') || ($default eq 'placement')) { |
$select1 = $select0; |
$select1 = $select0; |
$select0 = ''; |
$select0 = ''; |
} |
} |
Line 7104 sub build_category_rows {
|
Line 7614 sub build_category_rows {
|
} |
} |
|
|
sub modifiable_userdata_row { |
sub modifiable_userdata_row { |
my ($context,$item,$settings,$numinrow,$rowcount,$usertypes,$fieldsref,$titlesref) = @_; |
my ($context,$item,$settings,$numinrow,$rowcount,$usertypes,$fieldsref,$titlesref, |
|
$rowid,$customcss,$rowstyle) = @_; |
my ($role,$rolename,$statustype); |
my ($role,$rolename,$statustype); |
$role = $item; |
$role = $item; |
if ($context eq 'cancreate') { |
if ($context eq 'cancreate') { |
if ($item =~ /^emailusername_(.+)$/) { |
if ($item =~ /^(emailusername)_(.+)$/) { |
$statustype = $1; |
$role = $1; |
$role = 'emailusername'; |
$statustype = $2; |
if (ref($usertypes) eq 'HASH') { |
if (ref($usertypes) eq 'HASH') { |
if ($usertypes->{$statustype}) { |
if ($usertypes->{$statustype}) { |
$rolename = &mt('Data provided by [_1]',$usertypes->{$statustype}); |
$rolename = &mt('Data provided by [_1]',$usertypes->{$statustype}); |
Line 7145 sub modifiable_userdata_row {
|
Line 7656 sub modifiable_userdata_row {
|
%fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); |
%fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); |
} |
} |
my $output; |
my $output; |
my $css_class = $rowcount%2?' class="LC_odd_row"':''; |
my $css_class; |
$output = '<tr '.$css_class.'>'. |
if ($rowcount%2) { |
|
$css_class = 'LC_odd_row'; |
|
} |
|
if ($customcss) { |
|
$css_class .= " $customcss"; |
|
} |
|
$css_class =~ s/^\s+//; |
|
if ($css_class) { |
|
$css_class = ' class="'.$css_class.'"'; |
|
} |
|
if ($rowstyle) { |
|
$css_class .= ' style="'.$rowstyle.'"'; |
|
} |
|
if ($rowid) { |
|
$rowid = ' id="'.$rowid.'"'; |
|
} |
|
$output = '<tr '.$css_class.$rowid.'>'. |
'<td><span class="LC_nobreak">'.$rolename.'</span></td>'. |
'<td><span class="LC_nobreak">'.$rolename.'</span></td>'. |
'<td class="LC_left_item" colspan="2"><table>'; |
'<td class="LC_left_item" colspan="2"><table>'; |
my $rem; |
my $rem; |
Line 7180 sub modifiable_userdata_row {
|
Line 7707 sub modifiable_userdata_row {
|
} |
} |
} |
} |
} |
} |
|
|
for (my $i=0; $i<@fields; $i++) { |
my $total = scalar(@fields); |
my $rem = $i%($numinrow); |
for (my $i=0; $i<$total; $i++) { |
|
$rem = $i%($numinrow); |
if ($rem == 0) { |
if ($rem == 0) { |
if ($i > 0) { |
if ($i > 0) { |
$output .= '</tr>'; |
$output .= '</tr>'; |
Line 7224 sub modifiable_userdata_row {
|
Line 7752 sub modifiable_userdata_row {
|
'</label>'; |
'</label>'; |
} |
} |
$output .= '</span></td>'; |
$output .= '</span></td>'; |
$rem = @fields%($numinrow); |
|
} |
} |
my $colsleft = $numinrow - $rem; |
$rem = $total%$numinrow; |
if ($colsleft > 1 ) { |
my $colsleft; |
|
if ($rem) { |
|
$colsleft = $numinrow - $rem; |
|
} |
|
if ($colsleft > 1) { |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'. |
' </td>'; |
' </td>'; |
} elsif ($colsleft == 1) { |
} elsif ($colsleft == 1) { |
Line 7244 sub insttypes_row {
|
Line 7775 sub insttypes_row {
|
cansearch => 'Users allowed to search', |
cansearch => 'Users allowed to search', |
statustocreate => 'Institutional affiliation(s) able to create own account (login/SSO)', |
statustocreate => 'Institutional affiliation(s) able to create own account (login/SSO)', |
lockablenames => 'User preference to lock name', |
lockablenames => 'User preference to lock name', |
overrides => "Override domain's helpdesk settings based on requester's affiliation", |
selfassign => 'Self-reportable affiliations', |
); |
); |
my $showdom; |
my $showdom; |
if ($context eq 'cansearch') { |
if ($context eq 'cansearch') { |
Line 7291 sub insttypes_row {
|
Line 7822 sub insttypes_row {
|
if (grep(/^\Q$types->[$i]\E$/,@{$settings->{$context}})) { |
if (grep(/^\Q$types->[$i]\E$/,@{$settings->{$context}})) { |
$check = ' checked="checked" '; |
$check = ' checked="checked" '; |
} |
} |
} elsif (ref($settings->{$context}) eq 'HASH') { |
|
if (ref($settings->{$context}->{$types->[$i]}) eq 'HASH') { |
|
$check = ' checked="checked" '; |
|
} |
|
} elsif ($context eq 'statustocreate') { |
} elsif ($context eq 'statustocreate') { |
$check = ' checked="checked" '; |
$check = ' checked="checked" '; |
} |
} |
Line 7302 sub insttypes_row {
|
Line 7829 sub insttypes_row {
|
$output .= '<td class="LC_left_item">'. |
$output .= '<td class="LC_left_item">'. |
'<span class="LC_nobreak"><label>'. |
'<span class="LC_nobreak"><label>'. |
'<input type="checkbox" name="'.$context.'" '. |
'<input type="checkbox" name="'.$context.'" '. |
'value="'.$types->[$i].'"'.$check.'/>'. |
'value="'.$types->[$i].'"'.$check.$onclick.' />'. |
$usertypes->{$types->[$i]}.'</label></span></td>'; |
$usertypes->{$types->[$i]}.'</label></span></td>'; |
} |
} |
} |
} |
$rem = @{$types}%($numinrow); |
$rem = @{$types}%($numinrow); |
} |
} |
my $colsleft = $numinrow - $rem; |
my $colsleft = $numinrow - $rem; |
if ($context eq 'overrides') { |
if (($rem == 0) && (@{$types} > 0)) { |
if ($colsleft > 1) { |
$output .= '<tr>'; |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'; |
} |
} else { |
if ($colsleft > 1) { |
$output .= '<td class="LC_left_item">'; |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'; |
} |
|
$output .= ' '; |
|
} else { |
} else { |
if (($rem == 0) && (@{$types} > 0)) { |
$output .= '<td class="LC_left_item">'; |
$output .= '<tr>'; |
} |
} |
my $defcheck = ' '; |
if ($colsleft > 1) { |
if (ref($settings) eq 'HASH') { |
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'; |
if (ref($settings->{$context}) eq 'ARRAY') { |
} else { |
if (grep(/^default$/,@{$settings->{$context}})) { |
$output .= '<td class="LC_left_item">'; |
|
} |
|
my $defcheck = ' '; |
|
if (ref($settings) eq 'HASH') { |
|
if (ref($settings->{$context}) eq 'ARRAY') { |
|
if (grep(/^default$/,@{$settings->{$context}})) { |
|
$defcheck = ' checked="checked" '; |
|
} |
|
} elsif ($context eq 'statustocreate') { |
|
$defcheck = ' checked="checked" '; |
$defcheck = ' checked="checked" '; |
} |
} |
|
} elsif ($context eq 'statustocreate') { |
|
$defcheck = ' checked="checked" '; |
} |
} |
$output .= '<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="'.$context.'" '. |
|
'value="default"'.$defcheck.'/>'. |
|
$othertitle.'</label></span>'; |
|
} |
} |
$output .= '</td></tr></table></td></tr>'; |
$output .= '<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="'.$context.'" '. |
|
'value="default"'.$defcheck.$onclick.' />'. |
|
$othertitle.'</label></span></td>'. |
|
'</tr></table></td></tr>'; |
return $output; |
return $output; |
} |
} |
|
|
Line 8247 sub display_colorchgs {
|
Line 8765 sub display_colorchgs {
|
} else { |
} else { |
my $newitem = $confhash->{$role}{$item}; |
my $newitem = $confhash->{$role}{$item}; |
if ($key eq 'images') { |
if ($key eq 'images') { |
$newitem = '<img src="'.$confhash->{$role}{$item}.'" alt="'.$choices{$item}.'" valign="bottom" />'; |
$newitem = '<img src="'.$confhash->{$role}{$item}.'" alt="'.$choices{$item}.'" style="vertical-align: bottom" />'; |
} |
} |
$resulttext .= '<li>'.&mt("$choices{$item} set to [_1]",$newitem).'</li>'; |
$resulttext .= '<li>'.&mt("$choices{$item} set to [_1]",$newitem).'</li>'; |
} |
} |
Line 8329 sub check_authorstatus {
|
Line 8847 sub check_authorstatus {
|
|
|
sub publishlogo { |
sub publishlogo { |
my ($r,$action,$formname,$dom,$confname,$subdir,$thumbwidth,$thumbheight,$savefileas) = @_; |
my ($r,$action,$formname,$dom,$confname,$subdir,$thumbwidth,$thumbheight,$savefileas) = @_; |
my ($output,$fname,$logourl); |
my ($output,$fname,$logourl,$madethumb); |
if ($action eq 'upload') { |
if ($action eq 'upload') { |
$fname=$env{'form.'.$formname.'.filename'}; |
$fname=$env{'form.'.$formname.'.filename'}; |
chop($env{'form.'.$formname}); |
chop($env{'form.'.$formname}); |
Line 8374 sub publishlogo {
|
Line 8892 sub publishlogo {
|
} else { |
} else { |
my $source = $filepath.'/'.$file; |
my $source = $filepath.'/'.$file; |
my $logfile; |
my $logfile; |
if (!open($logfile,">>",$source.'.log')) { |
if (!open($logfile,">>$source".'.log')) { |
return (&mt('No write permission to Authoring Space')); |
return (&mt('No write permission to Authoring Space')); |
} |
} |
print $logfile |
print $logfile |
"\n================= Publish ".localtime()." ================\n". |
"\n================= Publish ".localtime()." ================\n". |
$env{'user.name'}.':'.$env{'user.domain'}."\n"; |
$env{'user.name'}.':'.$env{'user.domain'}."\n"; |
# Save the file |
# Save the file |
if (!open(FH,">",$source)) { |
if (!open(FH,'>'.$source)) { |
&Apache::lonnet::logthis('Failed to create '.$source); |
&Apache::lonnet::logthis('Failed to create '.$source); |
return (&mt('Failed to create file')); |
return (&mt('Failed to create file')); |
} |
} |
Line 8442 $env{'user.name'}.':'.$env{'user.domain'
|
Line 8960 $env{'user.name'}.':'.$env{'user.domain'
|
if ($fullwidth ne '' && $fullheight ne '') { |
if ($fullwidth ne '' && $fullheight ne '') { |
if ($fullwidth > $thumbwidth && $fullheight > $thumbheight) { |
if ($fullwidth > $thumbwidth && $fullheight > $thumbheight) { |
my $thumbsize = $thumbwidth.'x'.$thumbheight; |
my $thumbsize = $thumbwidth.'x'.$thumbheight; |
my @args = ('convert','-sample',$thumbsize,$inputfile,$outfile); |
system("convert -sample $thumbsize $inputfile $outfile"); |
system({$args[0]} @args); |
|
chmod(0660, $filepath.'/tn-'.$file); |
chmod(0660, $filepath.'/tn-'.$file); |
if (-e $outfile) { |
if (-e $outfile) { |
my $copyfile=$targetdir.'/tn-'.$file; |
my $copyfile=$targetdir.'/tn-'.$file; |
Line 8458 $env{'user.name'}.':'.$env{'user.domain'
|
Line 8975 $env{'user.name'}.':'.$env{'user.domain'
|
$r->set_handlers('PerlCleanupHandler' => [\¬ifysubscribed,@{$handlers}]); |
$r->set_handlers('PerlCleanupHandler' => [\¬ifysubscribed,@{$handlers}]); |
$registered_cleanup=1; |
$registered_cleanup=1; |
} |
} |
|
$madethumb = 1; |
} else { |
} else { |
print $logfile "\nUnable to write ".$copyfile. |
print $logfile "\nUnable to write ".$copyfile. |
':'.$!."\n"; |
':'.$!."\n"; |
Line 8470 $env{'user.name'}.':'.$env{'user.domain'
|
Line 8988 $env{'user.name'}.':'.$env{'user.domain'
|
$output = $versionresult; |
$output = $versionresult; |
} |
} |
} |
} |
return ($output,$logourl); |
return ($output,$logourl,$madethumb); |
} |
} |
|
|
sub logo_versioning { |
sub logo_versioning { |
Line 8522 sub write_metadata {
|
Line 9040 sub write_metadata {
|
{ |
{ |
print $logfile "\nWrite metadata file for ".$targetdir.'/'.$file; |
print $logfile "\nWrite metadata file for ".$targetdir.'/'.$file; |
my $mfh; |
my $mfh; |
if (open($mfh,">",$targetdir.'/'.$file.'.meta')) { |
if (open($mfh,'>'.$targetdir.'/'.$file.'.meta')) { |
foreach (sort(keys(%metadatafields))) { |
foreach (sort(keys(%metadatafields))) { |
unless ($_=~/\./) { |
unless ($_=~/\./) { |
my $unikey=$_; |
my $unikey=$_; |
Line 8556 sub notifysubscribed {
|
Line 9074 sub notifysubscribed {
|
next unless (ref($targetsource) eq 'ARRAY'); |
next unless (ref($targetsource) eq 'ARRAY'); |
my ($target,$source)=@{$targetsource}; |
my ($target,$source)=@{$targetsource}; |
if ($source ne '') { |
if ($source ne '') { |
if (open(my $logfh,">>",$source.'.log')) { |
if (open(my $logfh,'>>'.$source.'.log')) { |
print $logfh "\nCleanup phase: Notifications\n"; |
print $logfh "\nCleanup phase: Notifications\n"; |
my @subscribed=&subscribed_hosts($target); |
my @subscribed=&subscribed_hosts($target); |
foreach my $subhost (@subscribed) { |
foreach my $subhost (@subscribed) { |
Line 8582 sub notifysubscribed {
|
Line 9100 sub notifysubscribed {
|
sub subscribed_hosts { |
sub subscribed_hosts { |
my ($target) = @_; |
my ($target) = @_; |
my @subscribed; |
my @subscribed; |
if (open(my $fh,"<","$target.subscription")) { |
if (open(my $fh,"<$target.subscription")) { |
while (my $subline=<$fh>) { |
while (my $subline=<$fh>) { |
if ($subline =~ /^($match_lonid):/) { |
if ($subline =~ /^($match_lonid):/) { |
my $host = $1; |
my $host = $1; |
Line 8624 sub modify_quotas {
|
Line 9142 sub modify_quotas {
|
$context = $action; |
$context = $action; |
} |
} |
if ($context eq 'requestcourses') { |
if ($context eq 'requestcourses') { |
@usertools = ('official','unofficial','community','textbook'); |
@usertools = ('official','unofficial','community','textbook','placement'); |
@options =('norequest','approval','validate','autolimit'); |
@options =('norequest','approval','validate','autolimit'); |
%validations = &Apache::lonnet::auto_courserequest_checks($dom); |
%validations = &Apache::lonnet::auto_courserequest_checks($dom); |
%titles = &courserequest_titles(); |
%titles = &courserequest_titles(); |
Line 8673 sub modify_quotas {
|
Line 9191 sub modify_quotas {
|
my @approvalnotify = &Apache::loncommon::get_env_multiple('form.'.$context.'notifyapproval'); |
my @approvalnotify = &Apache::loncommon::get_env_multiple('form.'.$context.'notifyapproval'); |
@approvalnotify = sort(@approvalnotify); |
@approvalnotify = sort(@approvalnotify); |
$confhash{'notify'}{'approval'} = join(',',@approvalnotify); |
$confhash{'notify'}{'approval'} = join(',',@approvalnotify); |
my @crstypes = ('official','unofficial','community','textbook'); |
my @crstypes = ('official','unofficial','community','textbook','placement'); |
my @hasuniquecode = &Apache::loncommon::get_env_multiple('form.uniquecode'); |
my @hasuniquecode = &Apache::loncommon::get_env_multiple('form.uniquecode'); |
foreach my $type (@hasuniquecode) { |
foreach my $type (@hasuniquecode) { |
if (grep(/^\Q$type\E$/,@crstypes)) { |
if (grep(/^\Q$type\E$/,@crstypes)) { |
Line 8783 sub modify_quotas {
|
Line 9301 sub modify_quotas {
|
my ($cdom,$cnum) = split(/_/,$key); |
my ($cdom,$cnum) = split(/_/,$key); |
if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') { |
if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') { |
$errors .= '<li><span class="LC_error">'.&mt('Image not saved: could not find textbook course').'</li>'; |
$errors .= '<li><span class="LC_error">'.&mt('Image not saved: could not find textbook course').'</li>'; |
} else { |
} else { |
my ($imgurl,$error) = &process_textbook_image($r,$dom,$confname,$type.'_image_'.$i, |
my ($imgurl,$error) = &process_textbook_image($r,$dom,$confname,$type.'_image_'.$i, |
$cdom,$cnum,$type,$configuserok, |
$cdom,$cnum,$type,$configuserok, |
$switchserver,$author_ok); |
$switchserver,$author_ok); |
Line 8795 sub modify_quotas {
|
Line 9313 sub modify_quotas {
|
&Apache::lonnet::logthis($error); |
&Apache::lonnet::logthis($error); |
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
} |
} |
} |
} |
} elsif ($domconfig{$action}{$type}{$key}{'image'}) { |
} elsif ($domconfig{$action}{$type}{$key}{'image'}) { |
$confhash{$type}{$key}{'image'} = |
$confhash{$type}{$key}{'image'} = |
$domconfig{$action}{$type}{$key}{'image'}; |
$domconfig{$action}{$type}{$key}{'image'}; |
Line 8828 sub modify_quotas {
|
Line 9346 sub modify_quotas {
|
if ($type eq 'textbooks') { |
if ($type eq 'textbooks') { |
if ($env{'form.'.$type.'_addbook_image.filename'} ne '') { |
if ($env{'form.'.$type.'_addbook_image.filename'} ne '') { |
my ($cdom,$cnum) = split(/_/,$newbook{$type}); |
my ($cdom,$cnum) = split(/_/,$newbook{$type}); |
my ($imageurl,$error) = |
if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') { |
&process_textbook_image($r,$dom,$confname,$type.'_addbook_image',$cdom,$cnum,$type, |
$errors .= '<li><span class="LC_error">'.&mt('Image not saved: could not find textbook course').'</li>'; |
$configuserok,$switchserver,$author_ok); |
} else { |
if ($imageurl) { |
my ($imageurl,$error) = |
$confhash{$type}{$newbook{$type}}{'image'} = $imageurl; |
&process_textbook_image($r,$dom,$confname,$type.'_addbook_image',$cdom,$cnum,$type, |
} |
$configuserok,$switchserver,$author_ok); |
if ($error) { |
if ($imageurl) { |
&Apache::lonnet::logthis($error); |
$confhash{$type}{$newbook{$type}}{'image'} = $imageurl; |
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
} |
|
if ($error) { |
|
&Apache::lonnet::logthis($error); |
|
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
|
} |
} |
} |
} |
} |
} |
} |
Line 9356 sub modify_ltitools {
|
Line 9878 sub modify_ltitools {
|
map { $posslti{$_} = 1; } @ltiroles; |
map { $posslti{$_} = 1; } @ltiroles; |
my @allfields = ('fullname','firstname','lastname','email','user','roles'); |
my @allfields = ('fullname','firstname','lastname','email','user','roles'); |
map { $possfield{$_} = 1; } @allfields; |
map { $possfield{$_} = 1; } @allfields; |
my %lt = <itools_names(); |
my %lt = <itools_names(); |
if ($env{'form.ltitools_add'}) { |
if ($env{'form.ltitools_add'}) { |
my $title = $env{'form.ltitools_add_title'}; |
my $title = $env{'form.ltitools_add_title'}; |
$title =~ s/(`)/'/g; |
$title =~ s/(`)/'/g; |
Line 9393 sub modify_ltitools {
|
Line 9915 sub modify_ltitools {
|
} |
} |
} else { |
} else { |
if ($env{'form.ltitools_add_'.$item} ne '') { |
if ($env{'form.ltitools_add_'.$item} ne '') { |
$confhash{$newid}{'display'}{$item} = $env{'form.ltitools_add_'.$item}; |
$confhash{$newid}{'display'}{$item} = $env{'form.ltitools_add_'.$item}; |
} |
} |
} |
} |
} |
} |
Line 9430 sub modify_ltitools {
|
Line 9952 sub modify_ltitools {
|
if (($choice ne '') && ($posslti{$choice})) { |
if (($choice ne '') && ($posslti{$choice})) { |
$confhash{$newid}{'roles'}{$role} = $choice; |
$confhash{$newid}{'roles'}{$role} = $choice; |
if ($role eq 'cc') { |
if ($role eq 'cc') { |
$confhash{$newid}{'roles'}{'co'} = $choice; |
$confhash{$newid}{'roles'}{'co'} = $choice; |
} |
} |
} |
} |
} |
} |
Line 9451 sub modify_ltitools {
|
Line 9973 sub modify_ltitools {
|
$confhash{$newid}{'custom'}{$name} = $value; |
$confhash{$newid}{'custom'}{$name} = $value; |
} |
} |
} else { |
} else { |
my $error = &mt('Failed to acquire unique ID for new external tool'); |
my $error = &mt('Failed to acquire unique ID for new external tool'); |
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
} |
} |
} |
} |
Line 9465 sub modify_ltitools {
|
Line 9987 sub modify_ltitools {
|
my @newcustom = &Apache::loncommon::get_env_multiple('form.ltitools_customadd'); |
my @newcustom = &Apache::loncommon::get_env_multiple('form.ltitools_customadd'); |
if (@newcustom) { |
if (@newcustom) { |
map { $customadds{$_} = 1; } @newcustom; |
map { $customadds{$_} = 1; } @newcustom; |
} |
} |
my %imgdeletions; |
my %imgdeletions; |
my @todeleteimages = &Apache::loncommon::get_env_multiple('form.ltitools_image_del'); |
my @todeleteimages = &Apache::loncommon::get_env_multiple('form.ltitools_image_del'); |
if (@todeleteimages) { |
if (@todeleteimages) { |
Line 9642 sub modify_ltitools {
|
Line 10164 sub modify_ltitools {
|
} |
} |
} |
} |
my %customdels; |
my %customdels; |
my @customdeletions = &Apache::loncommon::get_env_multiple('form.ltitools_customdel_'.$i); |
my @customdeletions = &Apache::loncommon::get_env_multiple('form.ltitools_customdel_'.$i); |
if (@customdeletions) { |
if (@customdeletions) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
} |
} |
Line 9651 sub modify_ltitools {
|
Line 10173 sub modify_ltitools {
|
foreach my $key (keys(%{$domconfig{$action}{$itemid}{'custom'}})) { |
foreach my $key (keys(%{$domconfig{$action}{$itemid}{'custom'}})) { |
unless ($customdels{$key}) { |
unless ($customdels{$key}) { |
if ($env{'form.ltitools_customval_'.$key.'_'.$i} ne '') { |
if ($env{'form.ltitools_customval_'.$key.'_'.$i} ne '') { |
$confhash{$itemid}{'custom'}{$key} = $env{'form.ltitools_customval_'.$key.'_'.$i}; |
$confhash{$itemid}{'custom'}{$key} = $env{'form.ltitools_customval_'.$key.'_'.$i}; |
} |
} |
if ($domconfig{$action}{$itemid}{'custom'}{$key} ne $env{'form.ltitools_customval_'.$key.'_'.$i}) { |
if ($domconfig{$action}{$itemid}{'custom'}{$key} ne $env{'form.ltitools_customval_'.$key.'_'.$i}) { |
$changes{$itemid} = 1; |
$changes{$itemid} = 1; |
Line 9726 sub modify_ltitools {
|
Line 10248 sub modify_ltitools {
|
$bynum{$position} = $itemid; |
$bynum{$position} = $itemid; |
} |
} |
foreach my $pos (sort { $a <=> $b } keys(%bynum)) { |
foreach my $pos (sort { $a <=> $b } keys(%bynum)) { |
my $itemid = $bynum{$pos}; |
my $itemid = $bynum{$pos}; |
if (ref($confhash{$itemid}) ne 'HASH') { |
if (ref($confhash{$itemid}) ne 'HASH') { |
$resulttext .= '<li>'.&mt('Deleted: [_1]',$changes{$itemid}).'</li>'; |
$resulttext .= '<li>'.&mt('Deleted: [_1]',$changes{$itemid}).'</li>'; |
} else { |
} else { |
Line 9754 sub modify_ltitools {
|
Line 10276 sub modify_ltitools {
|
} |
} |
$resulttext .= '<li>'.&mt('Configurable in course:'); |
$resulttext .= '<li>'.&mt('Configurable in course:'); |
my @possconfig = ('label','title','target','linktext','explanation'); |
my @possconfig = ('label','title','target','linktext','explanation'); |
my $numconfig = 0; |
my $numconfig = 0; |
if (ref($confhash{$itemid}{'crsconf'}) eq 'HASH') { |
if (ref($confhash{$itemid}{'crsconf'}) eq 'HASH') { |
foreach my $item (@possconfig) { |
foreach my $item (@possconfig) { |
if ($confhash{$itemid}{'crsconf'}{$item}) { |
if ($confhash{$itemid}{'crsconf'}{$item}) { |
$numconfig ++; |
$numconfig ++; |
Line 9782 sub modify_ltitools {
|
Line 10304 sub modify_ltitools {
|
$displaylist = &mt('Display target').': '. |
$displaylist = &mt('Display target').': '. |
$confhash{$itemid}{'display'}{'target'}.','; |
$confhash{$itemid}{'display'}{'target'}.','; |
} |
} |
foreach my $size ('width','height') { |
foreach my $size ('width','height') { |
if ($confhash{$itemid}{'display'}{$size}) { |
if ($confhash{$itemid}{'display'}{$size}) { |
$displaylist .= (' 'x2).$lt{$size}.': '. |
$displaylist .= (' 'x2).$lt{$size}.': '. |
$confhash{$itemid}{'display'}{$size}.','; |
$confhash{$itemid}{'display'}{$size}.','; |
Line 9819 sub modify_ltitools {
|
Line 10341 sub modify_ltitools {
|
} |
} |
} |
} |
if ($rolemaps) { |
if ($rolemaps) { |
$rolemaps =~ s/,$//; |
$rolemaps =~ s/,$//; |
$resulttext .= '<li>'.&mt('Role mapping:').$rolemaps.'</li>'; |
$resulttext .= '<li>'.&mt('Role mapping:').$rolemaps.'</li>'; |
} |
} |
} |
} |
Line 9828 sub modify_ltitools {
|
Line 10350 sub modify_ltitools {
|
if (keys(%{$confhash{$itemid}{'custom'}})) { |
if (keys(%{$confhash{$itemid}{'custom'}})) { |
foreach my $key (sort(keys(%{$confhash{$itemid}{'custom'}}))) { |
foreach my $key (sort(keys(%{$confhash{$itemid}{'custom'}}))) { |
$customlist .= $key.':'.$confhash{$itemid}{'custom'}{$key}.(' 'x2); |
$customlist .= $key.':'.$confhash{$itemid}{'custom'}{$key}.(' 'x2); |
} |
} |
} |
} |
if ($customlist) { |
if ($customlist) { |
$resulttext .= '<li>'.&mt('Custom items').':'.$customlist.'</li>'; |
$resulttext .= '<li>'.&mt('Custom items').':'.$customlist.'</li>'; |
} |
} |
} |
} |
$resulttext .= '</ul></li>'; |
$resulttext .= '</ul></li>'; |
} |
} |
} |
} |
Line 9894 sub get_ltitools_id {
|
Line 10416 sub get_ltitools_id {
|
my $tries = 0; |
my $tries = 0; |
my $gotlock = &Apache::lonnet::newput_dom('ltitools',$lockhash,$cdom); |
my $gotlock = &Apache::lonnet::newput_dom('ltitools',$lockhash,$cdom); |
my ($id,$error); |
my ($id,$error); |
|
|
while (($gotlock ne 'ok') && ($tries<10)) { |
while (($gotlock ne 'ok') && ($tries<10)) { |
$tries ++; |
$tries ++; |
sleep (0.1); |
sleep (0.1); |
Line 10552 sub modify_contacts {
|
Line 11074 sub modify_contacts {
|
my $value = $env{'form.helpform_'.$field}; |
my $value = $env{'form.helpform_'.$field}; |
$value =~ s/^\s+|\s+$//g; |
$value =~ s/^\s+|\s+$//g; |
if (grep(/^\Q$value\E$/,@{$possoptions->{$field}})) { |
if (grep(/^\Q$value\E$/,@{$possoptions->{$field}})) { |
$contacts_hash{'contacts'}{'helpform'}{$field} = $value; |
$contacts_hash{contacts}{'helpform'}{$field} = $value; |
if ($field eq 'screenshot') { |
if ($field eq 'screenshot') { |
$env{'form.helpform_maxsize'} =~ s/^\s+|\s+$//g; |
$env{'form.helpform_maxsize'} =~ s/^\s+|\s+$//g; |
if ($env{'form.helpform_maxsize'} =~ /^\d+\.?\d*$/) { |
if ($env{'form.helpform_maxsize'} =~ /^\d+\.?\d*$/) { |
$contacts_hash{'contacts'}{'helpform'}{'maxsize'} = $env{'form.helpform_maxsize'}; |
$contacts_hash{contacts}{'helpform'}{'maxsize'} = $env{'form.helpform_maxsize'}; |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
|
my (@statuses,%usertypeshash,@overrides); |
|
if ((ref($types) eq 'ARRAY') && (@{$types} > 0)) { |
|
@statuses = @{$types}; |
|
if (ref($usertypes) eq 'HASH') { |
|
%usertypeshash = %{$usertypes}; |
|
} |
|
} |
|
if (@statuses) { |
|
my @possoverrides = &Apache::loncommon::get_env_multiple('form.overrides'); |
|
foreach my $type (@possoverrides) { |
|
if (($type ne '') && (grep(/^\Q$type\E$/,@statuses))) { |
|
push(@overrides,$type); |
|
} |
|
} |
|
if (@overrides) { |
|
foreach my $type (@overrides) { |
|
my @standard = &Apache::loncommon::get_env_multiple('form.override_'.$type); |
|
foreach my $item (@contacts) { |
|
if (grep(/^\Q$item\E$/,@standard)) { |
|
$contacts_hash{'contacts'}{'overrides'}{$type}{$item} = 1; |
|
$newsetting{'override_'.$type}{$item} = 1; |
|
} else { |
|
$contacts_hash{'contacts'}{'overrides'}{$type}{$item} = 0; |
|
$newsetting{'override_'.$type}{$item} = 0; |
|
} |
|
} |
|
$contacts_hash{'contacts'}{'overrides'}{$type}{'others'} = $env{'form.override_'.$type.'_others'}; |
|
$contacts_hash{'contacts'}{'overrides'}{$type}{'bcc'} = $env{'form.override_'.$type.'_bcc'}; |
|
$newsetting{'override_'.$type}{'others'} = $env{'form.override_'.$type.'_others'}; |
|
$newsetting{'override_'.$type}{'bcc'} = $env{'form.override_'.$type.'_bcc'}; |
|
if (($env{'form.override_'.$type.'_includestr'} ne '') && ($env{'form.override_'.$type.'_includeloc'} =~ /^s|b$/)) { |
|
$includestr{$type} = $env{'form.override_'.$type.'_includestr'}; |
|
$includeloc{$type} = $env{'form.override_'.$type.'_includeloc'}; |
|
$contacts_hash{'contacts'}{'overrides'}{$type}{'include'} = $includeloc{$type}.':'.&escape($includestr{$type}); |
|
$newsetting{'override_'.$type}{'include'} = $contacts_hash{'contacts'}{'overrides'}{$type}{'include'}; |
|
} |
|
} |
|
} |
|
} |
|
if (keys(%currsetting) > 0) { |
if (keys(%currsetting) > 0) { |
foreach my $item (@contacts) { |
foreach my $item (@contacts) { |
if ($to{$item} ne $currsetting{$item}) { |
if ($to{$item} ne $currsetting{$item}) { |
Line 10657 sub modify_contacts {
|
Line 11139 sub modify_contacts {
|
} |
} |
} |
} |
} |
} |
if (@statuses) { |
|
if (ref($currsetting{'overrides'}) eq 'HASH') { |
|
foreach my $key (keys(%{$currsetting{'overrides'}})) { |
|
if (ref($currsetting{'overrides'}{$key}) eq 'HASH') { |
|
if (ref($newsetting{'override_'.$key}) eq 'HASH') { |
|
foreach my $item (@contacts,'bcc','others','include') { |
|
if ($currsetting{'overrides'}{$key}{$item} ne $newsetting{'override_'.$key}{$item}) { |
|
push(@{$changes{'overrides'}},$key); |
|
last; |
|
} |
|
} |
|
} else { |
|
push(@{$changes{'overrides'}},$key); |
|
} |
|
} |
|
} |
|
foreach my $key (@overrides) { |
|
unless (exists($currsetting{'overrides'}{$key})) { |
|
push(@{$changes{'overrides'}},$key); |
|
} |
|
} |
|
} else { |
|
foreach my $key (@overrides) { |
|
push(@{$changes{'overrides'}},$key); |
|
} |
|
} |
|
} |
|
} else { |
} else { |
my %default; |
my %default; |
$default{'supportemail'} = $Apache::lonnet::perlvar{'lonSupportEMail'}; |
$default{'supportemail'} = $Apache::lonnet::perlvar{'lonSupportEMail'}; |
Line 10784 sub modify_contacts {
|
Line 11239 sub modify_contacts {
|
$resulttext .= $bcctext.': <span class="LC_cusr_emph">'.$bcc{$type}.'</span>'; |
$resulttext .= $bcctext.': <span class="LC_cusr_emph">'.$bcc{$type}.'</span>'; |
} elsif (!@text) { |
} elsif (!@text) { |
$resulttext .= &mt('No one'); |
$resulttext .= &mt('No one'); |
} |
} |
if ($includestr{$type} ne '') { |
if ($includestr{$type} ne '') { |
if ($includeloc{$type} eq 'b') { |
if ($includeloc{$type} eq 'b') { |
$resulttext .= '<br />'.&mt('Text automatically added to e-mail body:').' '.$includestr{$type}; |
$resulttext .= '<br />'.&mt('Text automatically added to e-mail body:').' '.$includestr{$type}; |
Line 10798 sub modify_contacts {
|
Line 11253 sub modify_contacts {
|
$resulttext .= '</li>'; |
$resulttext .= '</li>'; |
} |
} |
} |
} |
if (ref($changes{'overrides'}) eq 'ARRAY') { |
|
my @deletions; |
|
foreach my $type (@{$changes{'overrides'}}) { |
|
if ($usertypeshash{$type}) { |
|
if (grep(/^\Q$type\E/,@overrides)) { |
|
$resulttext .= '<li>'.&mt("Overrides based on requester's affiliation set for [_1]", |
|
$usertypeshash{$type}).'<ul><li>'; |
|
if (ref($newsetting{'override_'.$type}) eq 'HASH') { |
|
my @text; |
|
foreach my $item (@contacts) { |
|
if ($newsetting{'override_'.$type}{$item}) { |
|
push(@text,$short_titles->{$item}); |
|
} |
|
} |
|
if ($newsetting{'override_'.$type}{'others'} ne '') { |
|
push(@text,$newsetting{'override_'.$type}{'others'}); |
|
} |
|
|
|
if (@text) { |
|
$resulttext .= &mt('Helpdesk e-mail sent to: [_1]', |
|
'<span class="LC_cusr_emph">'.join(', ',@text).'</span>'); |
|
} |
|
if ($newsetting{'override_'.$type}{'bcc'} ne '') { |
|
my $bcctext; |
|
if (@text) { |
|
$bcctext = ' '.&mt('with Bcc to'); |
|
} else { |
|
$bcctext = '(Bcc)'; |
|
} |
|
$resulttext .= $bcctext.': <span class="LC_cusr_emph">'.$newsetting{'override_'.$type}{'bcc'}.'</span>'; |
|
} elsif (!@text) { |
|
$resulttext .= &mt('Helpdesk e-mail sent to no one'); |
|
} |
|
$resulttext .= '</li>'; |
|
if ($newsetting{'override_'.$type}{'include'} ne '') { |
|
my ($loc,$str) = split(/:/,$newsetting{'override_'.$type}{'include'}); |
|
if ($loc eq 'b') { |
|
$resulttext .= '<li>'.&mt('Text automatically added to e-mail body:').' '.&unescape($str).'</li>'; |
|
} elsif ($loc eq 's') { |
|
$resulttext .= '<li>'.&mt('Text automatically added to e-mail subject:').' '.&unescape($str).'</li>'; |
|
} |
|
} |
|
} |
|
$resulttext .= '</li></ul></li>'; |
|
} else { |
|
push(@deletions,$usertypeshash{$type}); |
|
} |
|
} |
|
} |
|
if (@deletions) { |
|
$resulttext .= '<li>'.&mt("Overrides based on requester's affiliation discontinued for: [_1]", |
|
join(', ',@deletions)).'</li>'; |
|
} |
|
} |
|
my @offon = ('off','on'); |
my @offon = ('off','on'); |
if ($changes{'reporterrors'}) { |
if ($changes{'reporterrors'}) { |
$resulttext .= '<li>'. |
$resulttext .= '<li>'. |
Line 10907 sub modify_contacts {
|
Line 11308 sub modify_contacts {
|
&mt('Max size for file uploaded to help form by logged-in user set to [_1] MB.', |
&mt('Max size for file uploaded to help form by logged-in user set to [_1] MB.', |
$contacts_hash{'contacts'}{'helpform'}{'maxsize'}). |
$contacts_hash{'contacts'}{'helpform'}{'maxsize'}). |
'</li>'; |
'</li>'; |
|
|
} |
} |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
Line 10929 sub modify_usercreation {
|
Line 11331 sub modify_usercreation {
|
if ($key eq 'cancreate') { |
if ($key eq 'cancreate') { |
if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') { |
if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') { |
foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) { |
foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) { |
if (($item eq 'selfcreate') || ($item eq 'statustocreate') || |
if (($item eq 'requestcrs') || ($item eq 'course') || ($item eq 'author')) { |
($item eq 'captcha') || ($item eq 'recaptchakeys') || |
|
($item eq 'recaptchaversion')) { |
|
$save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
|
} else { |
|
$curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
$curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
|
} else { |
|
$save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
} |
} |
} |
} |
} |
} |
Line 11137 sub modify_usercreation {
|
Line 11537 sub modify_usercreation {
|
} |
} |
|
|
sub modify_selfcreation { |
sub modify_selfcreation { |
my ($dom,%domconfig) = @_; |
my ($dom,$lastactref,%domconfig) = @_; |
my ($resulttext,$warningmsg,%curr_usercreation,%curr_usermodify,%changes,%cancreate); |
my ($resulttext,$warningmsg,%curr_usercreation,%curr_usermodify,%curr_inststatus,%changes,%cancreate); |
my (%save_usercreate,%save_usermodify); |
my (%save_usercreate,%save_usermodify,%save_inststatus,@types,%usertypes); |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
if (ref($types) eq 'ARRAY') { |
my ($othertitle,$usertypesref,$typesref) = &Apache::loncommon::sorted_inst_types($dom); |
$usertypes->{'default'} = $othertitle; |
if (ref($typesref) eq 'ARRAY') { |
push(@{$types},'default'); |
@types = @{$typesref}; |
|
} |
|
if (ref($usertypesref) eq 'HASH') { |
|
%usertypes = %{$usertypesref}; |
} |
} |
|
$usertypes{'default'} = $othertitle; |
# |
# |
# Retrieve current domain configuration for self-creation of usernames from $domconfig{'usercreation'}. |
# Retrieve current domain configuration for self-creation of usernames from $domconfig{'usercreation'}. |
# |
# |
Line 11154 sub modify_selfcreation {
|
Line 11558 sub modify_selfcreation {
|
if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') { |
if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') { |
foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) { |
foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) { |
if (($item eq 'selfcreate') || ($item eq 'statustocreate') || |
if (($item eq 'selfcreate') || ($item eq 'statustocreate') || |
($item eq 'captcha') || ($item eq 'recaptchakeys') || |
($item eq 'captcha') || ($item eq 'recaptchakeys') || |
($item eq 'recaptchaversion') || |
($item eq 'recaptchaversion') || ($item eq 'notify') || |
($item eq 'emailusername') || ($item eq 'notify') || |
($item eq 'emailusername') || ($item eq 'shibenv') || |
($item eq 'selfcreateprocessing') || ($item eq 'shibenv')) { |
($item eq 'selfcreateprocessing') || ($item eq 'emailverified') || |
|
($item eq 'emailoptions') || ($item eq 'emaildomain')) { |
$curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
$curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
} else { |
} else { |
$save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
$save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; |
Line 11183 sub modify_selfcreation {
|
Line 11588 sub modify_selfcreation {
|
} |
} |
} |
} |
} |
} |
|
# |
|
# Retrieve current domain configuration for institutional status types from $domconfig{'inststatus'}. |
|
# |
|
if (ref($domconfig{'inststatus'}) eq 'HASH') { |
|
foreach my $key (keys(%{$domconfig{'inststatus'}})) { |
|
if ($key eq 'inststatusguest') { |
|
$curr_inststatus{$key} = $domconfig{'inststatus'}{$key}; |
|
} else { |
|
$save_inststatus{$key} = $domconfig{'inststatus'}{$key}; |
|
} |
|
} |
|
} |
|
|
my @contexts = ('selfcreate'); |
my @contexts = ('selfcreate'); |
@{$cancreate{'selfcreate'}} = (); |
@{$cancreate{'selfcreate'}} = (); |
%{$cancreate{'emailusername'}} = (); |
%{$cancreate{'emailusername'}} = (); |
@{$cancreate{'statustocreate'}} = (); |
if (@types) { |
|
@{$cancreate{'statustocreate'}} = (); |
|
} |
%{$cancreate{'selfcreateprocessing'}} = (); |
%{$cancreate{'selfcreateprocessing'}} = (); |
%{$cancreate{'shibenv'}} = (); |
%{$cancreate{'shibenv'}} = (); |
|
%{$cancreate{'emailverified'}} = (); |
|
%{$cancreate{'emailoptions'}} = (); |
|
%{$cancreate{'emaildomain'}} = (); |
my %selfcreatetypes = ( |
my %selfcreatetypes = ( |
sso => 'users authenticated by institutional single sign on', |
sso => 'users authenticated by institutional single sign on', |
login => 'users authenticated by institutional log-in', |
login => 'users authenticated by institutional log-in', |
email => 'users who provide a valid e-mail address for use as username', |
email => 'users verified by e-mail', |
); |
); |
# |
# |
# Populate $cancreate{'selfcreate'} array reference with types of user, for which self-creation of user accounts |
# Populate $cancreate{'selfcreate'} array reference with types of user, for which self-creation of user accounts |
# is permitted. |
# is permitted. |
# |
# |
|
my ($emailrules,$emailruleorder) = &Apache::lonnet::inst_userrules($dom,'email'); |
|
|
my @statuses; |
my (@statuses,%email_rule); |
if (ref($domconfig{'inststatus'}) eq 'HASH') { |
|
if (ref($domconfig{'inststatus'}{'inststatusguest'}) eq 'ARRAY') { |
|
@statuses = @{$domconfig{'inststatus'}{'inststatusguest'}}; |
|
} |
|
} |
|
push(@statuses,'default'); |
|
|
|
foreach my $item ('login','sso','email') { |
foreach my $item ('login','sso','email') { |
if ($item eq 'email') { |
if ($item eq 'email') { |
if ($env{'form.cancreate_email'}) { |
if ($env{'form.cancreate_email'}) { |
push(@{$cancreate{'selfcreate'}},'email'); |
if (@types) { |
push(@contexts,'selfcreateprocessing'); |
my @poss_statuses = &Apache::loncommon::get_env_multiple('form.selfassign'); |
foreach my $type (@statuses) { |
foreach my $status (@poss_statuses) { |
if ($type eq 'default') { |
if (grep(/^\Q$status\E$/,(@types,'default'))) { |
$cancreate{'selfcreateprocessing'}{$type} = $env{'form.cancreate_emailprocess'}; |
push(@statuses,$status); |
} else { |
} |
$cancreate{'selfcreateprocessing'}{$type} = $env{'form.cancreate_emailprocess_'.$type}; |
} |
|
$save_inststatus{'inststatusguest'} = \@statuses; |
|
} else { |
|
push(@statuses,'default'); |
|
} |
|
if (@statuses) { |
|
my %curr_rule; |
|
if (ref($curr_usercreation{'email_rule'}) eq 'ARRAY') { |
|
foreach my $type (@statuses) { |
|
$curr_rule{$type} = $curr_usercreation{'email_rule'}; |
|
} |
|
} elsif (ref($curr_usercreation{'email_rule'}) eq 'HASH') { |
|
foreach my $type (@statuses) { |
|
$curr_rule{$type} = $curr_usercreation{'email_rule'}{$type}; |
|
} |
|
} |
|
push(@{$cancreate{'selfcreate'}},'email'); |
|
push(@contexts,('selfcreateprocessing','emailverified','emailoptions')); |
|
my %curremaildom; |
|
if (ref($curr_usercreation{'cancreate'}{'emaildomain'}) eq 'HASH') { |
|
%curremaildom = %{$curr_usercreation{'cancreate'}{'emaildomain'}}; |
|
} |
|
foreach my $type (@statuses) { |
|
if ($env{'form.cancreate_emailprocess_'.$type} =~ /^(?:approval|automatic)$/) { |
|
$cancreate{'selfcreateprocessing'}{$type} = $env{'form.cancreate_emailprocess_'.$type}; |
|
} |
|
if ($env{'form.cancreate_usernameoptions_'.$type} =~ /^(?:all|first|free)$/) { |
|
$cancreate{'emailverified'}{$type} = $env{'form.cancreate_usernameoptions_'.$type}; |
|
} |
|
if ($env{'form.cancreate_emailoptions_'.$type} =~ /^(any|inst|noninst|custom)$/) { |
|
# |
|
# Retrieve rules (if any) governing types of e-mail address which may be used to verify a username. |
|
# |
|
my $chosen = $1; |
|
if (($chosen eq 'inst') || ($chosen eq 'noninst')) { |
|
my $emaildom; |
|
if ($env{'form.cancreate_emaildomain_'.$chosen.'_'.$type} =~ /^\@[^\@]+$/) { |
|
$emaildom = $env{'form.cancreate_emaildomain_'.$chosen.'_'.$type}; |
|
$cancreate{'emaildomain'}{$type}{$chosen} = $emaildom; |
|
if (ref($curremaildom{$type}) eq 'HASH') { |
|
if (exists($curremaildom{$type}{$chosen})) { |
|
if ($curremaildom{$type}{$chosen} ne $emaildom) { |
|
push(@{$changes{'cancreate'}},'emaildomain'); |
|
} |
|
} elsif ($emaildom ne '') { |
|
push(@{$changes{'cancreate'}},'emaildomain'); |
|
} |
|
} elsif ($emaildom ne '') { |
|
push(@{$changes{'cancreate'}},'emaildomain'); |
|
} |
|
} |
|
$cancreate{'emailoptions'}{$type} = $env{'form.cancreate_emailoptions_'.$type}; |
|
} elsif ($chosen eq 'custom') { |
|
my @possemail_rules = &Apache::loncommon::get_env_multiple('form.email_rule_'.$type); |
|
$email_rule{$type} = []; |
|
if (ref($emailrules) eq 'HASH') { |
|
foreach my $rule (@possemail_rules) { |
|
if (exists($emailrules->{$rule})) { |
|
push(@{$email_rule{$type}},$rule); |
|
} |
|
} |
|
} |
|
if (@{$email_rule{$type}}) { |
|
$cancreate{'emailoptions'}{$type} = 'custom'; |
|
if (ref($curr_rule{$type}) eq 'ARRAY') { |
|
if (@{$curr_rule{$type}} > 0) { |
|
foreach my $rule (@{$curr_rule{$type}}) { |
|
if (!grep(/^\Q$rule\E$/,@{$email_rule{$type}})) { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} |
|
foreach my $type (@{$email_rule{$type}}) { |
|
if (!grep(/^\Q$type\E$/,@{$curr_rule{$type}})) { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} else { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} else { |
|
$cancreate{'emailoptions'}{$type} = $env{'form.cancreate_emailoptions_'.$type}; |
|
} |
|
} |
|
} |
|
if (@types) { |
|
if (ref($curr_inststatus{'inststatusguest'}) eq 'ARRAY') { |
|
my @changed = &Apache::loncommon::compare_arrays(\@statuses,$curr_inststatus{'inststatusguest'}); |
|
if (@changed) { |
|
push(@{$changes{'inststatus'}},'inststatusguest'); |
|
} |
|
} else { |
|
push(@{$changes{'inststatus'}},'inststatusguest'); |
|
} |
|
} |
|
} else { |
|
delete($env{'form.cancreate_email'}); |
|
if (ref($curr_inststatus{'inststatusguest'}) eq 'ARRAY') { |
|
if (@{$curr_inststatus{'inststatusguest'}} > 0) { |
|
push(@{$changes{'inststatus'}},'inststatusguest'); |
|
} |
|
} |
|
} |
|
} else { |
|
$save_inststatus{'inststatusguest'} = []; |
|
if (ref($curr_inststatus{'inststatusguest'}) eq 'ARRAY') { |
|
if (@{$curr_inststatus{'inststatusguest'}} > 0) { |
|
push(@{$changes{'inststatus'}},'inststatusguest'); |
} |
} |
} |
} |
} |
} |
Line 11227 sub modify_selfcreation {
|
Line 11751 sub modify_selfcreation {
|
} |
} |
} |
} |
} |
} |
my (@email_rule,%userinfo,%savecaptcha); |
my (%userinfo,%savecaptcha); |
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info(); |
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info(); |
# |
# |
# Populate $cancreate{'emailusername'}{$type} hash ref with information fields (if new user will provide data |
# Populate $cancreate{'emailusername'}{$type} hash ref with information fields (if new user will provide data |
Line 11236 sub modify_selfcreation {
|
Line 11760 sub modify_selfcreation {
|
|
|
if ($env{'form.cancreate_email'}) { |
if ($env{'form.cancreate_email'}) { |
push(@contexts,'emailusername'); |
push(@contexts,'emailusername'); |
if (ref($types) eq 'ARRAY') { |
if (@statuses) { |
foreach my $type (@{$types}) { |
foreach my $type (@statuses) { |
if (ref($infofields) eq 'ARRAY') { |
if (ref($infofields) eq 'ARRAY') { |
foreach my $field (@{$infofields}) { |
foreach my $field (@{$infofields}) { |
if ($env{'form.canmodify_emailusername_'.$type.'_'.$field} =~ /^(required|optional)$/) { |
if ($env{'form.canmodify_emailusername_'.$type.'_'.$field} =~ /^(required|optional)$/) { |
Line 11249 sub modify_selfcreation {
|
Line 11773 sub modify_selfcreation {
|
} |
} |
# |
# |
# Populate $cancreate{'notify'} hash ref with names of Domain Coordinators who are to be notified of |
# Populate $cancreate{'notify'} hash ref with names of Domain Coordinators who are to be notified of |
# queued requests for self-creation of account using e-mail address as username |
# queued requests for self-creation of account verified by e-mail. |
# |
# |
|
|
my @approvalnotify = &Apache::loncommon::get_env_multiple('form.selfcreationnotifyapproval'); |
my @approvalnotify = &Apache::loncommon::get_env_multiple('form.selfcreationnotifyapproval'); |
Line 11269 sub modify_selfcreation {
|
Line 11793 sub modify_selfcreation {
|
push(@{$changes{'cancreate'}},'notify'); |
push(@{$changes{'cancreate'}},'notify'); |
} |
} |
|
|
# |
|
# Retrieve rules (if any) governing types of e-mail address which may be used as a username |
|
# |
|
@email_rule = &Apache::loncommon::get_env_multiple('form.email_rule'); |
|
&process_captcha('cancreate',\%changes,\%savecaptcha,$curr_usercreation{'cancreate'}); |
&process_captcha('cancreate',\%changes,\%savecaptcha,$curr_usercreation{'cancreate'}); |
if (ref($curr_usercreation{'email_rule'}) eq 'ARRAY') { |
|
if (@{$curr_usercreation{'email_rule'}} > 0) { |
|
foreach my $type (@{$curr_usercreation{'email_rule'}}) { |
|
if (!grep(/^\Q$type\E$/,@email_rule)) { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} |
|
if (@email_rule > 0) { |
|
foreach my $type (@email_rule) { |
|
if (!grep(/^\Q$type\E$/,@{$curr_usercreation{'email_rule'}})) { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} |
|
} elsif (@email_rule > 0) { |
|
push(@{$changes{'email_rule'}},@email_rule); |
|
} |
|
} |
} |
# |
# |
# Check if domain default is set appropriately, if self-creation of accounts is to be available for |
# Check if domain default is set appropriately, if self-creation of accounts is to be available for |
# institutional log-in. |
# institutional log-in. |
# |
# |
if (grep(/^login$/,@{$cancreate{'selfcreate'}})) { |
if (grep(/^login$/,@{$cancreate{'selfcreate'}})) { |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
|
if (!((($domdefaults{'auth_def'} =~/^krb/) && ($domdefaults{'auth_arg_def'} ne '')) || |
if (!((($domdefaults{'auth_def'} =~/^krb/) && ($domdefaults{'auth_arg_def'} ne '')) || |
($domdefaults{'auth_def'} eq 'localauth'))) { |
($domdefaults{'auth_def'} eq 'localauth'))) { |
$warningmsg = &mt('Although account creation has been set to be available for institutional logins, currently default authentication in this domain has not been set to support this.').' '. |
$warningmsg = &mt('Although account creation has been set to be available for institutional logins, currently default authentication in this domain has not been set to support this.').' '. |
Line 11317 sub modify_selfcreation {
|
Line 11818 sub modify_selfcreation {
|
# which the user may supply, if institutional data is unavailable. |
# which the user may supply, if institutional data is unavailable. |
# |
# |
if (($env{'form.cancreate_login'}) || ($env{'form.cancreate_sso'})) { |
if (($env{'form.cancreate_login'}) || ($env{'form.cancreate_sso'})) { |
if (ref($types) eq 'ARRAY') { |
if (@types) { |
if (@{$types} > 1) { |
@{$cancreate{'statustocreate'}} = &Apache::loncommon::get_env_multiple('form.statustocreate'); |
@{$cancreate{'statustocreate'}} = &Apache::loncommon::get_env_multiple('form.statustocreate'); |
push(@contexts,'statustocreate'); |
push(@contexts,'statustocreate'); |
foreach my $type (@types) { |
} else { |
|
undef($cancreate{'statustocreate'}); |
|
} |
|
foreach my $type (@{$types}) { |
|
my @modifiable = &Apache::loncommon::get_env_multiple('form.canmodify_'.$type); |
my @modifiable = &Apache::loncommon::get_env_multiple('form.canmodify_'.$type); |
foreach my $field (@fields) { |
foreach my $field (@fields) { |
if (grep(/^\Q$field\E$/,@modifiable)) { |
if (grep(/^\Q$field\E$/,@modifiable)) { |
Line 11335 sub modify_selfcreation {
|
Line 11832 sub modify_selfcreation {
|
} |
} |
} |
} |
if (ref($curr_usermodify{'selfcreate'}) eq 'HASH') { |
if (ref($curr_usermodify{'selfcreate'}) eq 'HASH') { |
foreach my $type (@{$types}) { |
foreach my $type (@types) { |
if (ref($curr_usermodify{'selfcreate'}{$type}) eq 'HASH') { |
if (ref($curr_usermodify{'selfcreate'}{$type}) eq 'HASH') { |
foreach my $field (@fields) { |
foreach my $field (@fields) { |
if ($save_usermodify{'selfcreate'}{$type}{$field} ne |
if ($save_usermodify{'selfcreate'}{$type}{$field} ne |
Line 11347 sub modify_selfcreation {
|
Line 11844 sub modify_selfcreation {
|
} |
} |
} |
} |
} else { |
} else { |
foreach my $type (@{$types}) { |
foreach my $type (@types) { |
push(@{$changes{'selfcreate'}},$type); |
push(@{$changes{'selfcreate'}},$type); |
} |
} |
} |
} |
Line 11396 sub modify_selfcreation {
|
Line 11893 sub modify_selfcreation {
|
} |
} |
} elsif (ref($curr_usercreation{'cancreate'}{$item}) eq 'HASH') { |
} elsif (ref($curr_usercreation{'cancreate'}{$item}) eq 'HASH') { |
if (ref($cancreate{$item}) eq 'HASH') { |
if (ref($cancreate{$item}) eq 'HASH') { |
foreach my $curr (keys(%{$curr_usercreation{'cancreate'}{$item}})) { |
foreach my $type (keys(%{$curr_usercreation{'cancreate'}{$item}})) { |
if (ref($curr_usercreation{'cancreate'}{$item}{$curr}) eq 'HASH') { |
if (ref($curr_usercreation{'cancreate'}{$item}{$type}) eq 'HASH') { |
foreach my $field (keys(%{$curr_usercreation{'cancreate'}{$item}{$curr}})) { |
foreach my $field (keys(%{$curr_usercreation{'cancreate'}{$item}{$type}})) { |
unless ($curr_usercreation{'cancreate'}{$item}{$curr}{$field} eq $cancreate{$item}{$curr}{$field}) { |
unless ($curr_usercreation{'cancreate'}{$item}{$type}{$field} eq $cancreate{$item}{$type}{$field}) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
} |
} |
} |
} |
} elsif ($item eq 'selfcreateprocessing') { |
} elsif (($item eq 'selfcreateprocessing') || ($item eq 'emailverified') || ($item eq 'emailoptions')) { |
if ($cancreate{$item}{$curr} ne $curr_usercreation{'cancreate'}{$item}{$curr}) { |
if ($cancreate{$item}{$type} ne $curr_usercreation{'cancreate'}{$item}{$type}) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
|
push(@{$changes{'cancreate'}},$item); |
|
} |
|
} |
|
} else { |
|
if (!$cancreate{$item}{$curr}) { |
|
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
} |
} |
} |
} |
} |
} |
foreach my $field (keys(%{$cancreate{$item}})) { |
foreach my $type (keys(%{$cancreate{$item}})) { |
if (ref($cancreate{$item}{$field}) eq 'HASH') { |
if (ref($cancreate{$item}{$type}) eq 'HASH') { |
foreach my $inner (keys(%{$cancreate{$item}{$field}})) { |
foreach my $field (keys(%{$cancreate{$item}{$type}})) { |
if (ref($curr_usercreation{'cancreate'}{$item}{$field}) eq 'HASH') { |
if (ref($curr_usercreation{'cancreate'}{$item}{$type}) eq 'HASH') { |
unless ($curr_usercreation{'cancreate'}{$item}{$field}{$inner} eq $cancreate{$item}{$field}{$inner}) { |
unless ($curr_usercreation{'cancreate'}{$item}{$type}{$field} eq $cancreate{$item}{$type}{$field}) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
Line 11434 sub modify_selfcreation {
|
Line 11925 sub modify_selfcreation {
|
} |
} |
} |
} |
} |
} |
} elsif ($item eq 'selfcreateprocessing') { |
} elsif (($item eq 'selfcreateprocessing') || ($item eq 'emailverified') || ($item eq 'emailoptions')) { |
if ($cancreate{$item}{$field} ne $curr_usercreation{'cancreate'}{$item}{$field}) { |
if ($cancreate{$item}{$type} ne $curr_usercreation{'cancreate'}{$item}{$type}) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
|
push(@{$changes{'cancreate'}},$item); |
|
} |
|
} |
|
} else { |
|
if (!$curr_usercreation{'cancreate'}{$item}{$field}) { |
|
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
Line 11456 sub modify_selfcreation {
|
Line 11941 sub modify_selfcreation {
|
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
} |
} |
} elsif (ref($cancreate{$item}) eq 'HASH') { |
} |
if (!$cancreate{$item}{$curr_usercreation{'cancreate'}{$item}}) { |
} elsif (($item eq 'selfcreateprocessing') || ($item eq 'emailverified') || ($item eq 'emailoptions')) { |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
if (ref($cancreate{$item}) eq 'HASH') { |
push(@{$changes{'cancreate'}},$item); |
if (!grep(/^$item$/,@{$changes{'cancreate'}})) { |
} |
push(@{$changes{'cancreate'}},$item); |
} |
} |
} |
} |
} elsif ($item eq 'emailusername') { |
} elsif ($item eq 'emailusername') { |
Line 11493 sub modify_selfcreation {
|
Line 11978 sub modify_selfcreation {
|
if (ref($cancreate{'selfcreateprocessing'}) eq 'HASH') { |
if (ref($cancreate{'selfcreateprocessing'}) eq 'HASH') { |
$save_usercreate{'cancreate'}{'selfcreateprocessing'} = $cancreate{'selfcreateprocessing'}; |
$save_usercreate{'cancreate'}{'selfcreateprocessing'} = $cancreate{'selfcreateprocessing'}; |
} |
} |
|
if (ref($cancreate{'emailverified'}) eq 'HASH') { |
|
$save_usercreate{'cancreate'}{'emailverified'} = $cancreate{'emailverified'}; |
|
} |
|
if (ref($cancreate{'emailoptions'}) eq 'HASH') { |
|
$save_usercreate{'cancreate'}{'emailoptions'} = $cancreate{'emailoptions'}; |
|
} |
|
if (ref($cancreate{'emaildomain'}) eq 'HASH') { |
|
$save_usercreate{'cancreate'}{'emaildomain'} = $cancreate{'emaildomain'}; |
|
} |
if (ref($cancreate{'statustocreate'}) eq 'ARRAY') { |
if (ref($cancreate{'statustocreate'}) eq 'ARRAY') { |
$save_usercreate{'cancreate'}{'statustocreate'} = $cancreate{'statustocreate'}; |
$save_usercreate{'cancreate'}{'statustocreate'} = $cancreate{'statustocreate'}; |
} |
} |
Line 11500 sub modify_selfcreation {
|
Line 11994 sub modify_selfcreation {
|
$save_usercreate{'cancreate'}{'shibenv'} = $cancreate{'shibenv'}; |
$save_usercreate{'cancreate'}{'shibenv'} = $cancreate{'shibenv'}; |
} |
} |
$save_usercreate{'cancreate'}{'emailusername'} = $cancreate{'emailusername'}; |
$save_usercreate{'cancreate'}{'emailusername'} = $cancreate{'emailusername'}; |
$save_usercreate{'email_rule'} = \@email_rule; |
$save_usercreate{'email_rule'} = \%email_rule; |
|
|
my %userconfig_hash = ( |
my %userconfig_hash = ( |
usercreation => \%save_usercreate, |
usercreation => \%save_usercreate, |
usermodification => \%save_usermodify, |
usermodification => \%save_usermodify, |
|
inststatus => \%save_inststatus, |
); |
); |
|
|
my $putresult = &Apache::lonnet::put_dom('configuration',\%userconfig_hash, |
my $putresult = &Apache::lonnet::put_dom('configuration',\%userconfig_hash, |
$dom); |
$dom); |
# |
# |
# Accumulate details of changes to domain cofiguration for self-creation of usernames in $resulttext |
# Accumulate details of changes to domain configuration for self-creation of usernames in $resulttext |
# |
# |
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
if (keys(%changes) > 0) { |
if (keys(%changes) > 0) { |
Line 11517 sub modify_selfcreation {
|
Line 12013 sub modify_selfcreation {
|
if (ref($changes{'cancreate'}) eq 'ARRAY') { |
if (ref($changes{'cancreate'}) eq 'ARRAY') { |
my %lt = &selfcreation_types(); |
my %lt = &selfcreation_types(); |
foreach my $type (@{$changes{'cancreate'}}) { |
foreach my $type (@{$changes{'cancreate'}}) { |
my $chgtext; |
my $chgtext = ''; |
if ($type eq 'selfcreate') { |
if ($type eq 'selfcreate') { |
if (@{$cancreate{$type}} == 0) { |
if (@{$cancreate{$type}} == 0) { |
$chgtext .= &mt('Self creation of a new user account is not permitted.'); |
$chgtext .= &mt('Self creation of a new user account is not permitted.'); |
Line 11532 sub modify_selfcreation {
|
Line 12028 sub modify_selfcreation {
|
if (grep(/^(login|sso)$/,@{$cancreate{$type}})) { |
if (grep(/^(login|sso)$/,@{$cancreate{$type}})) { |
if (ref($cancreate{'statustocreate'}) eq 'ARRAY') { |
if (ref($cancreate{'statustocreate'}) eq 'ARRAY') { |
if (@{$cancreate{'statustocreate'}} == 0) { |
if (@{$cancreate{'statustocreate'}} == 0) { |
$chgtext .= '<br />'. |
$chgtext .= '<span class="LC_warning">'. |
'<span class="LC_warning">'. |
&mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts via log-in or single sign-on."). |
&mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts."). |
'</span><br />'; |
'</span>'; |
|
} |
} |
} |
} |
} |
} |
|
if (grep(/^email$/,@{$cancreate{$type}})) { |
|
if (!@statuses) { |
|
$chgtext .= '<span class="LC_warning">'. |
|
&mt("However, e-mail verification is currently set to 'unavailable' for all user types (including 'other'), so self-creation of accounts is not possible for non-institutional log-in."). |
|
'</span><br />'; |
|
|
|
} |
|
} |
} |
} |
} |
} |
} elsif ($type eq 'shibenv') { |
} elsif ($type eq 'shibenv') { |
if (keys(%{$cancreate{$type}}) == 0) { |
if (keys(%{$cancreate{$type}}) == 0) { |
$chgtext .= &mt('Shibboleth-autheticated user does not use environment variables to set user information'); |
$chgtext .= &mt('Shibboleth-autheticated user does not use environment variables to set user information').'<br />'; |
} else { |
} else { |
$chgtext .= &mt('Shibboleth-autheticated user information set from environment variables, as follows:'). |
$chgtext .= &mt('Shibboleth-autheticated user information set from environment variables, as follows:'). |
'<ul>'; |
'<ul>'; |
Line 11556 sub modify_selfcreation {
|
Line 12059 sub modify_selfcreation {
|
} |
} |
} |
} |
$chgtext .= '</ul>'; |
$chgtext .= '</ul>'; |
} |
} |
} elsif ($type eq 'statustocreate') { |
} elsif ($type eq 'statustocreate') { |
if ((ref($cancreate{'selfcreate'}) eq 'ARRAY') && |
if ((ref($cancreate{'selfcreate'}) eq 'ARRAY') && |
(ref($cancreate{'statustocreate'}) eq 'ARRAY')) { |
(ref($cancreate{'statustocreate'}) eq 'ARRAY')) { |
Line 11569 sub modify_selfcreation {
|
Line 12072 sub modify_selfcreation {
|
&mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts."). |
&mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts."). |
'</span>'; |
'</span>'; |
} |
} |
} elsif (ref($usertypes) eq 'HASH') { |
} elsif (keys(%usertypes) > 0) { |
if (grep(/^(login|sso)$/,@{$cancreate{'selfcreate'}})) { |
if (grep(/^(login|sso)$/,@{$cancreate{'selfcreate'}})) { |
$chgtext .= &mt('Creation of a new account for an institutional user is restricted to the following institutional affiliation(s):'); |
$chgtext .= &mt('Creation of a new account for an institutional user is restricted to the following institutional affiliation(s):'); |
} else { |
} else { |
Line 11580 sub modify_selfcreation {
|
Line 12083 sub modify_selfcreation {
|
if ($case eq 'default') { |
if ($case eq 'default') { |
$chgtext .= '<li>'.$othertitle.'</li>'; |
$chgtext .= '<li>'.$othertitle.'</li>'; |
} else { |
} else { |
$chgtext .= '<li>'.$usertypes->{$case}.'</li>'; |
$chgtext .= '<li>'.$usertypes{$case}.'</li>'; |
} |
} |
} |
} |
$chgtext .= '</ul>'; |
$chgtext .= '</ul>'; |
if (!grep(/^(login|sso)$/,@{$cancreate{'selfcreate'}})) { |
if (!grep(/^(login|sso)$/,@{$cancreate{'selfcreate'}})) { |
$chgtext .= '<br /><span class="LC_warning">'. |
$chgtext .= '<span class="LC_warning">'. |
&mt('However, users authenticated by institutional login/single sign on are not currently permitted to create accounts.'). |
&mt('However, users authenticated by institutional login/single sign on are not currently permitted to create accounts.'). |
'</span>'; |
'</span>'; |
} |
} |
Line 11597 sub modify_selfcreation {
|
Line 12100 sub modify_selfcreation {
|
$chgtext .= &mt('Although institutional affiliations permitted to create accounts were changed, self creation of accounts is not currently permitted for any authentication types.'); |
$chgtext .= &mt('Although institutional affiliations permitted to create accounts were changed, self creation of accounts is not currently permitted for any authentication types.'); |
} |
} |
} |
} |
|
$chgtext .= '<br />'; |
} |
} |
} elsif ($type eq 'selfcreateprocessing') { |
} elsif ($type eq 'selfcreateprocessing') { |
my %choices = &Apache::lonlocal::texthash ( |
my %choices = &Apache::lonlocal::texthash ( |
automatic => 'Automatic approval', |
automatic => 'Automatic approval', |
approval => 'Queued for approval', |
approval => 'Queued for approval', |
); |
); |
if (@statuses > 1) { |
if (@types) { |
$chgtext .= &mt('Processing of requests to create account with e-mail address as username set as follows:'). |
if (@statuses) { |
'<ul>'; |
$chgtext .= &mt('Processing of requests to create account with e-mail verification set as follows:'). |
foreach my $type (@statuses) { |
'<ul>'; |
if ($type eq 'default') { |
foreach my $status (@statuses) { |
$chgtext .= '<li>'.$othertitle.' -- '.$choices{$cancreate{'selfcreateprocessing'}{$type}}.'</li>'; |
if ($status eq 'default') { |
} else { |
$chgtext .= '<li>'.$othertitle.' -- '.$choices{$cancreate{'selfcreateprocessing'}{$status}}.'</li>'; |
$chgtext .= '<li>'.$usertypes->{$type}.' -- '.$choices{$cancreate{'selfcreateprocessing'}{$type}}.'</li>'; |
} else { |
} |
$chgtext .= '<li>'.$usertypes{$status}.' -- '.$choices{$cancreate{'selfcreateprocessing'}{$status}}.'</li>'; |
} |
} |
$chgtext .= '</ul>'; |
} |
|
$chgtext .= '</ul>'; |
|
} |
|
} else { |
|
$chgtext .= &mt('Processing of requests to create account with e-mail verification set to: "[_1]"', |
|
$choices{$cancreate{'selfcreateprocessing'}{'default'}}); |
|
} |
|
} elsif ($type eq 'emailverified') { |
|
my %options = &Apache::lonlocal::texthash ( |
|
all => 'Same as e-mail', |
|
first => 'Omit @domain', |
|
free => 'Free to choose', |
|
); |
|
if (@types) { |
|
if (@statuses) { |
|
$chgtext .= &mt('For self-created accounts verified by e-mail address, username is set as follows:'). |
|
'<ul>'; |
|
foreach my $status (@statuses) { |
|
if ($type eq 'default') { |
|
$chgtext .= '<li>'.$othertitle.' -- '.$options{$cancreate{'emailverified'}{$status}}.'</li>'; |
|
} else { |
|
$chgtext .= '<li>'.$usertypes{$status}.' -- '.$options{$cancreate{'emailverified'}{$status}}.'</li>'; |
|
} |
|
} |
|
$chgtext .= '</ul>'; |
|
} |
} else { |
} else { |
$chgtext .= &mt('Processing of requests to create account with e-mail address as username set to: "[_1]"', |
$chgtext .= &mt("For self-created accounts verified by e-mail address, user's username is: '[_1]'", |
$choices{$cancreate{'selfcreateprocessing'}{'default'}}); |
$options{$cancreate{'emailverified'}{'default'}}); |
|
} |
|
} elsif ($type eq 'emailoptions') { |
|
my %options = &Apache::lonlocal::texthash ( |
|
any => 'Any e-mail', |
|
inst => 'Institutional only', |
|
noninst => 'Non-institutional only', |
|
custom => 'Custom restrictions', |
|
); |
|
if (@types) { |
|
if (@statuses) { |
|
$chgtext .= &mt('For self-created accounts verified by e-mail address, requirements for e-mail address are as follows:'). |
|
'<ul>'; |
|
foreach my $status (@statuses) { |
|
if ($type eq 'default') { |
|
$chgtext .= '<li>'.$othertitle.' -- '.$options{$cancreate{'emailoptions'}{$status}}.'</li>'; |
|
} else { |
|
$chgtext .= '<li>'.$usertypes{$status}.' -- '.$options{$cancreate{'emailoptions'}{$status}}.'</li>'; |
|
} |
|
} |
|
$chgtext .= '</ul>'; |
|
} |
|
} else { |
|
if ($cancreate{'emailoptions'}{'default'} eq 'any') { |
|
$chgtext .= &mt('For self-created accounts verified by e-mail address, any e-mail may be used'); |
|
} else { |
|
$chgtext .= &mt('For self-created accounts verified by e-mail address, e-mail restricted to: "[_1]"', |
|
$options{$cancreate{'emailoptions'}{'default'}}); |
|
} |
|
} |
|
} elsif ($type eq 'emaildomain') { |
|
my $output; |
|
if (@statuses) { |
|
foreach my $type (@statuses) { |
|
if (ref($cancreate{'emaildomain'}{$type}) eq 'HASH') { |
|
if ($cancreate{'emailoptions'}{$type} eq 'inst') { |
|
if ($type eq 'default') { |
|
if ((ref($cancreate{'emaildomain'}{$type}) ne 'HASH') || |
|
($cancreate{'emaildomain'}{$type}{'inst'} eq '')) { |
|
$output = '<li>'.$othertitle.' -- '.&mt('No restriction on e-mail domain').'</li>'; |
|
} else { |
|
$output = '<li>'.$othertitle.' -- '.&mt("User's e-mail address needs to end: [_1]", |
|
$cancreate{'emaildomain'}{$type}{'inst'}).'</li>'; |
|
} |
|
} else { |
|
if ((ref($cancreate{'emaildomain'}{$type}) ne 'HASH') || |
|
($cancreate{'emaildomain'}{$type}{'inst'} eq '')) { |
|
$output = '<li>'.$usertypes{$type}.' -- '.&mt('No restriction on e-mail domain').'</li>'; |
|
} else { |
|
$output = '<li>'.$usertypes{$type}.' -- '.&mt("User's e-mail address needs to end: [_1]", |
|
$cancreate{'emaildomain'}{$type}{'inst'}).'</li>'; |
|
} |
|
} |
|
} elsif ($cancreate{'emailoptions'}{$type} eq 'noninst') { |
|
if ($type eq 'default') { |
|
if ((ref($cancreate{'emaildomain'}{$type}) ne 'HASH') || |
|
($cancreate{'emaildomain'}{$type}{'noninst'} eq '')) { |
|
$output = '<li>'.$othertitle.' -- '.&mt('No restriction on e-mail domain').'</li>'; |
|
} else { |
|
$output = '<li>'.$othertitle.' -- '.&mt("User's e-mail address must not end: [_1]", |
|
$cancreate{'emaildomain'}{$type}{'noninst'}).'</li>'; |
|
} |
|
} else { |
|
if ((ref($cancreate{'emaildomain'}{$type}) ne 'HASH') || |
|
($cancreate{'emaildomain'}{$type}{'noninst'} eq '')) { |
|
$output = '<li>'.$usertypes{$type}.' -- '.&mt('No restriction on e-mail domain').'</li>'; |
|
} else { |
|
$output = '<li>'.$usertypes{$type}.' -- '.&mt("User's e-mail address must not end: [_1]", |
|
$cancreate{'emaildomain'}{$type}{'noninst'}).'</li>'; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if ($output ne '') { |
|
$chgtext .= &mt('For self-created accounts verified by e-mail address:'). |
|
'<ul>'.$output.'</ul>'; |
} |
} |
} elsif ($type eq 'captcha') { |
} elsif ($type eq 'captcha') { |
if ($savecaptcha{$type} eq 'notused') { |
if ($savecaptcha{$type} eq 'notused') { |
Line 11653 sub modify_selfcreation {
|
Line 12259 sub modify_selfcreation {
|
} |
} |
} elsif ($type eq 'emailusername') { |
} elsif ($type eq 'emailusername') { |
if (ref($cancreate{'emailusername'}) eq 'HASH') { |
if (ref($cancreate{'emailusername'}) eq 'HASH') { |
if (ref($types) eq 'ARRAY') { |
if (@statuses) { |
foreach my $type (@{$types}) { |
foreach my $type (@statuses) { |
if (ref($cancreate{'emailusername'}{$type}) eq 'HASH') { |
if (ref($cancreate{'emailusername'}{$type}) eq 'HASH') { |
if (keys(%{$cancreate{'emailusername'}{$type}}) > 0) { |
if (keys(%{$cancreate{'emailusername'}{$type}}) > 0) { |
$chgtext .= &mt('When self-creating account with e-mail as username, the following information will be provided by [_1]:',"'$usertypes->{$type}'"). |
$chgtext .= &mt('When self-creating account with e-mail verification, the following information will be provided by [_1]:',"'$usertypes{$type}'"). |
'<ul>'; |
'<ul>'; |
foreach my $field (@{$infofields}) { |
foreach my $field (@{$infofields}) { |
if ($cancreate{'emailusername'}{$type}{$field}) { |
if ($cancreate{'emailusername'}{$type}{$field}) { |
Line 11666 sub modify_selfcreation {
|
Line 12272 sub modify_selfcreation {
|
} |
} |
$chgtext .= '</ul>'; |
$chgtext .= '</ul>'; |
} else { |
} else { |
$chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',"'$usertypes->{$type}'").'<br />'; |
$chgtext .= &mt('When self creating account with e-mail verification, no information besides e-mail address will be provided by [_1].',"'$usertypes{$type}'").'<br />'; |
} |
} |
} else { |
} else { |
$chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',"'$usertypes->{$type}'").'<br />'; |
$chgtext .= &mt('When self creating account with e-mail verification, no information besides e-mail address will be provided by [_1].',"'$usertypes{$type}'").'<br />'; |
} |
} |
} |
} |
} |
} |
} |
} |
} elsif ($type eq 'notify') { |
} elsif ($type eq 'notify') { |
$chgtext = &mt('No Domain Coordinators will receive notification of username requests requiring approval.'); |
my $numapprove = 0; |
if (ref($changes{'cancreate'}) eq 'ARRAY') { |
if (ref($changes{'cancreate'}) eq 'ARRAY') { |
if ((grep(/^notify$/,@{$changes{'cancreate'}})) && (ref($cancreate{'notify'}) eq 'HASH')) { |
if ((grep(/^notify$/,@{$changes{'cancreate'}})) && (ref($cancreate{'notify'}) eq 'HASH')) { |
if ($cancreate{'notify'}{'approval'}) { |
if ($cancreate{'notify'}{'approval'}) { |
$chgtext = &mt('Notification of username requests requiring approval will be sent to: ').$cancreate{'notify'}{'approval'}; |
$chgtext .= &mt('Notification of username requests requiring approval will be sent to: ').$cancreate{'notify'}{'approval'}; |
|
$numapprove ++; |
} |
} |
} |
} |
} |
} |
|
unless ($numapprove) { |
|
$chgtext .= &mt('No Domain Coordinators will receive notification of username requests requiring approval.'); |
|
} |
} |
} |
if ($chgtext) { |
if ($chgtext) { |
$resulttext .= '<li>'.$chgtext.'</li>'; |
$resulttext .= '<li>'.$chgtext.'</li>'; |
} |
} |
} |
} |
} |
} |
if (ref($changes{'email_rule'}) eq 'ARRAY') { |
if ((ref($changes{'email_rule'}) eq 'ARRAY') && (@{$changes{'email_rule'}} > 0)) { |
my ($emailrules,$emailruleorder) = |
my ($emailrules,$emailruleorder) = |
&Apache::lonnet::inst_userrules($dom,'email'); |
&Apache::lonnet::inst_userrules($dom,'email'); |
my $chgtext = '<ul>'; |
foreach my $type (@{$changes{'email_rule'}}) { |
foreach my $type (@email_rule) { |
if (ref($email_rule{$type}) eq 'ARRAY') { |
if (ref($emailrules->{$type}) eq 'HASH') { |
my $chgtext = '<ul>'; |
$chgtext .= '<li>'.$emailrules->{$type}{'name'}.'</li>'; |
foreach my $rule (@{$email_rule{$type}}) { |
|
if (ref($emailrules->{$rule}) eq 'HASH') { |
|
$chgtext .= '<li>'.$emailrules->{$rule}{'name'}.'</li>'; |
|
} |
|
} |
|
$chgtext .= '</ul>'; |
|
my $typename; |
|
if (@types) { |
|
if ($type eq 'default') { |
|
$typename = $othertitle; |
|
} else { |
|
$typename = $usertypes{$type}; |
|
} |
|
$chgtext .= &mt('(Affiliation: [_1])',$typename); |
|
} |
|
if (@{$email_rule{$type}} > 0) { |
|
$resulttext .= '<li>'. |
|
&mt('Accounts may not be created by users verified by e-mail, for e-mail addresses of the following types: ', |
|
$usertypes{$type}). |
|
$chgtext. |
|
'</li>'; |
|
} else { |
|
$resulttext .= '<li>'. |
|
&mt('There are now no restrictions on e-mail addresses which may be used for verification when a user requests an account.'). |
|
'</li>'. |
|
&mt('(Affiliation: [_1])',$typename); |
|
} |
} |
} |
} |
} |
$chgtext .= '</ul>'; |
} |
if (@email_rule > 0) { |
if (ref($changes{'inststatus'}) eq 'ARRAY') { |
$resulttext .= '<li>'. |
if (ref($save_inststatus{'inststatusguest'}) eq 'ARRAY') { |
&mt('Accounts may not be created by users self-enrolling with e-mail addresses of the following types: '). |
if (@{$save_inststatus{'inststatusguest'}} > 0) { |
$chgtext. |
my $chgtext = '<ul>'; |
'</li>'; |
foreach my $type (@{$save_inststatus{'inststatusguest'}}) { |
} else { |
$chgtext .= '<li>'.$usertypes{$type}.'</li>'; |
$resulttext .= '<li>'. |
} |
&mt('There are now no restrictions on e-mail addresses which may be used as a username when self-enrolling.'). |
$chgtext .= '</ul>'; |
'</li>'; |
$resulttext .= '<li>'. |
|
&mt('A user will self-report one of the following affiliations when requesting an account verified by e-mail: '). |
|
$chgtext. |
|
'</li>'; |
|
} else { |
|
$resulttext .= '<li>'. |
|
&mt('No affiliations available for self-reporting when requesting an account verified by e-mail.'). |
|
'</li>'; |
|
} |
} |
} |
} |
} |
if (ref($changes{'selfcreate'}) eq 'ARRAY') { |
if (ref($changes{'selfcreate'}) eq 'ARRAY') { |
Line 11715 sub modify_selfcreation {
|
Line 12359 sub modify_selfcreation {
|
my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); |
my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); |
foreach my $type (@{$changes{'selfcreate'}}) { |
foreach my $type (@{$changes{'selfcreate'}}) { |
my $typename = $type; |
my $typename = $type; |
if (ref($usertypes) eq 'HASH') { |
if (keys(%usertypes) > 0) { |
if ($usertypes->{$type} ne '') { |
if ($usertypes{$type} ne '') { |
$typename = $usertypes->{$type}; |
$typename = $usertypes{$type}; |
} |
} |
} |
} |
my @modifiable; |
my @modifiable; |
Line 11740 sub modify_selfcreation {
|
Line 12384 sub modify_selfcreation {
|
$resulttext .= '</ul></li>'; |
$resulttext .= '</ul></li>'; |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
|
my $cachetime = 24*60*60; |
|
$domdefaults{'inststatusguest'} = $save_inststatus{'inststatusguest'}; |
|
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); |
|
if (ref($lastactref) eq 'HASH') { |
|
$lastactref->{'domdefaults'} = 1; |
|
} |
} else { |
} else { |
$resulttext = &mt('No changes made to self-creation settings'); |
$resulttext = &mt('No changes made to self-creation settings'); |
} |
} |
Line 12023 sub modify_defaults {
|
Line 12673 sub modify_defaults {
|
} |
} |
my @todelete = &Apache::loncommon::get_env_multiple('form.inststatus_delete'); |
my @todelete = &Apache::loncommon::get_env_multiple('form.inststatus_delete'); |
my @allpos; |
my @allpos; |
my %guests; |
|
my %alltypes; |
my %alltypes; |
my ($currtitles,$currguests,$currorder); |
my @inststatusguest; |
|
if (ref($currinststatus->{'inststatusguest'}) eq 'ARRAY') { |
|
foreach my $type (@{$currinststatus->{'inststatusguest'}}) { |
|
unless (grep(/^\Q$type\E$/,@todelete)) { |
|
push(@inststatusguest,$type); |
|
} |
|
} |
|
} |
|
my ($currtitles,$currorder); |
if (ref($currinststatus) eq 'HASH') { |
if (ref($currinststatus) eq 'HASH') { |
if (ref($currinststatus->{'inststatusorder'}) eq 'ARRAY') { |
if (ref($currinststatus->{'inststatusorder'}) eq 'ARRAY') { |
foreach my $type (@{$currinststatus->{'inststatusorder'}}) { |
foreach my $type (@{$currinststatus->{'inststatusorder'}}) { |
Line 12040 sub modify_defaults {
|
Line 12697 sub modify_defaults {
|
$allpos[$position] = $type; |
$allpos[$position] = $type; |
$alltypes{$type} = $env{'form.inststatus_title_'.$type}; |
$alltypes{$type} = $env{'form.inststatus_title_'.$type}; |
$alltypes{$type} =~ s/`//g; |
$alltypes{$type} =~ s/`//g; |
if ($env{'form.inststatus_guest_'.$type}) { |
|
$guests{$type} = 1; |
|
} |
|
} |
} |
} |
} |
if (ref($currinststatus->{'inststatusguest'}) eq 'ARRAY') { |
|
$currguests = join(',',@{$currinststatus->{'inststatusguest'}}); |
|
} |
|
$currorder = join(',',@{$currinststatus->{'inststatusorder'}}); |
$currorder = join(',',@{$currinststatus->{'inststatusorder'}}); |
$currtitles =~ s/,$//; |
$currtitles =~ s/,$//; |
} |
} |
Line 12056 sub modify_defaults {
|
Line 12707 sub modify_defaults {
|
my $newtype = $env{'form.addinststatus'}; |
my $newtype = $env{'form.addinststatus'}; |
$newtype =~ s/\W//g; |
$newtype =~ s/\W//g; |
unless (exists($alltypes{$newtype})) { |
unless (exists($alltypes{$newtype})) { |
if ($env{'form.addinststatus_guest'}) { |
|
$guests{$newtype} = 1; |
|
} |
|
$alltypes{$newtype} = $env{'form.addinststatus_title'}; |
$alltypes{$newtype} = $env{'form.addinststatus_title'}; |
$alltypes{$newtype} =~ s/`//g; |
$alltypes{$newtype} =~ s/`//g; |
my $position = $env{'form.addinststatus_pos'}; |
my $position = $env{'form.addinststatus_pos'}; |
Line 12068 sub modify_defaults {
|
Line 12716 sub modify_defaults {
|
} |
} |
} |
} |
} |
} |
my (@orderedstatus,@orderedguests); |
my @orderedstatus; |
foreach my $type (@allpos) { |
foreach my $type (@allpos) { |
unless (($type eq '') || (grep(/^\Q$type\E$/,@orderedstatus))) { |
unless (($type eq '') || (grep(/^\Q$type\E$/,@orderedstatus))) { |
push(@orderedstatus,$type); |
push(@orderedstatus,$type); |
if ($guests{$type}) { |
|
push(@orderedguests,$type); |
|
} |
|
} |
} |
} |
} |
foreach my $type (keys(%alltypes)) { |
foreach my $type (keys(%alltypes)) { |
Line 12085 sub modify_defaults {
|
Line 12730 sub modify_defaults {
|
$defaults_hash{'inststatus'} = { |
$defaults_hash{'inststatus'} = { |
inststatustypes => \%alltypes, |
inststatustypes => \%alltypes, |
inststatusorder => \@orderedstatus, |
inststatusorder => \@orderedstatus, |
inststatusguest => \@orderedguests, |
inststatusguest => \@inststatusguest, |
}; |
}; |
if (ref($defaults_hash{'inststatus'}) eq 'HASH') { |
if (ref($defaults_hash{'inststatus'}) eq 'HASH') { |
foreach my $item ('inststatustypes','inststatusorder','inststatusguest') { |
foreach my $item ('inststatustypes','inststatusorder','inststatusguest') { |
Line 12095 sub modify_defaults {
|
Line 12740 sub modify_defaults {
|
if ($currorder ne join(',',@orderedstatus)) { |
if ($currorder ne join(',',@orderedstatus)) { |
$changes{'inststatus'}{'inststatusorder'} = 1; |
$changes{'inststatus'}{'inststatusorder'} = 1; |
} |
} |
if ($currguests ne join(',',@orderedguests)) { |
|
$changes{'inststatus'}{'inststatusguest'} = 1; |
|
} |
|
my $newtitles; |
my $newtitles; |
foreach my $item (@orderedstatus) { |
foreach my $item (@orderedstatus) { |
$newtitles .= $alltypes{$item}.','; |
$newtitles .= $alltypes{$item}.','; |
Line 12116 sub modify_defaults {
|
Line 12758 sub modify_defaults {
|
foreach my $item (sort(keys(%changes))) { |
foreach my $item (sort(keys(%changes))) { |
if ($item eq 'inststatus') { |
if ($item eq 'inststatus') { |
if (ref($changes{'inststatus'}) eq 'HASH') { |
if (ref($changes{'inststatus'}) eq 'HASH') { |
if (($changes{'inststatus'}{'inststatustypes'}) || $changes{'inststatus'}{'inststatusorder'}) { |
if (@orderedstatus) { |
$resulttext .= '<li>'.&mt('Institutional user status types set to:').' '; |
$resulttext .= '<li>'.&mt('Institutional user status types set to:').' '; |
foreach my $type (@orderedstatus) { |
foreach my $type (@orderedstatus) { |
$resulttext .= $alltypes{$type}.', '; |
$resulttext .= $alltypes{$type}.', '; |
} |
} |
$resulttext =~ s/, $//; |
$resulttext =~ s/, $//; |
$resulttext .= '</li>'; |
$resulttext .= '</li>'; |
} |
} else { |
if ($changes{'inststatus'}{'inststatusguest'}) { |
$resulttext .= '<li>'.&mt('Institutional user status types deleted').'</li>'; |
$resulttext .= '<li>'; |
|
if (@orderedguests) { |
|
$resulttext .= &mt('Types assignable to "non-institutional" usernames set to:').' '; |
|
foreach my $type (@orderedguests) { |
|
$resulttext .= $alltypes{$type}.', '; |
|
} |
|
$resulttext =~ s/, $//; |
|
} else { |
|
$resulttext .= &mt('Types assignable to "non-institutional" usernames set to none.'); |
|
} |
|
$resulttext .= '</li>'; |
|
} |
} |
} |
} |
} else { |
} else { |
Line 12321 sub modify_coursecategories {
|
Line 12952 sub modify_coursecategories {
|
if ($domconfig{'coursecategories'}{'categorizecomm'} ne $env{'form.categorizecomm'}) { |
if ($domconfig{'coursecategories'}{'categorizecomm'} ne $env{'form.categorizecomm'}) { |
$changes{'categorizecomm'} = 1; |
$changes{'categorizecomm'} = 1; |
$domconfig{'coursecategories'}{'categorizecomm'} = $env{'form.categorizecomm'}; |
$domconfig{'coursecategories'}{'categorizecomm'} = $env{'form.categorizecomm'}; |
|
|
|
} |
|
if ($domconfig{'coursecategories'}{'togglecatsplace'} ne $env{'form.togglecatsplace'}) { |
|
$changes{'togglecatsplace'} = 1; |
|
$domconfig{'coursecategories'}{'togglecatsplace'} = $env{'form.togglecatsplace'}; |
|
} |
|
if ($domconfig{'coursecategories'}{'categorizeplace'} ne $env{'form.categorizeplace'}) { |
|
$changes{'categorizeplace'} = 1; |
|
$domconfig{'coursecategories'}{'categorizeplace'} = $env{'form.categorizeplace'}; |
} |
} |
foreach my $item (@catitems) { |
foreach my $item (@catitems) { |
if (grep(/^\Q$env{'form.coursecat_'.$item}\E$/,@cattypes)) { |
if (grep(/^\Q$env{'form.coursecat_'.$item}\E$/,@cattypes)) { |
Line 12335 sub modify_coursecategories {
|
Line 12975 sub modify_coursecategories {
|
$changes{'categorize'} = 1; |
$changes{'categorize'} = 1; |
$changes{'togglecatscomm'} = 1; |
$changes{'togglecatscomm'} = 1; |
$changes{'categorizecomm'} = 1; |
$changes{'categorizecomm'} = 1; |
|
$changes{'togglecatsplace'} = 1; |
|
$changes{'categorizeplace'} = 1; |
$domconfig{'coursecategories'} = { |
$domconfig{'coursecategories'} = { |
togglecats => $env{'form.togglecats'}, |
togglecats => $env{'form.togglecats'}, |
categorize => $env{'form.categorize'}, |
categorize => $env{'form.categorize'}, |
togglecatscomm => $env{'form.togglecatscomm'}, |
togglecatscomm => $env{'form.togglecatscomm'}, |
categorizecomm => $env{'form.categorizecomm'}, |
categorizecomm => $env{'form.categorizecomm'}, |
|
togglecatsplace => $env{'form.togglecatsplace'}, |
|
categorizeplace => $env{'form.categorizeplace'}, |
}; |
}; |
foreach my $item (@catitems) { |
foreach my $item (@catitems) { |
if ($env{'form.coursecat_'.$item} ne 'std') { |
if ($env{'form.coursecat_'.$item} ne 'std') { |
Line 12357 sub modify_coursecategories {
|
Line 13001 sub modify_coursecategories {
|
if (($domconfig{'coursecategories'}{'cats'}{'communities::0'} ne '') && ($env{'form.communities'} == 0)) { |
if (($domconfig{'coursecategories'}{'cats'}{'communities::0'} ne '') && ($env{'form.communities'} == 0)) { |
push(@deletecategory,'communities::0'); |
push(@deletecategory,'communities::0'); |
} |
} |
|
if (($domconfig{'coursecategories'}{'cats'}{'placement::0'} ne '') && ($env{'form.placement'} == 0)) { |
|
push(@deletecategory,'placement::0'); |
|
} |
} |
} |
my (@predelcats,@predeltrails,%predelallitems,%sort_by_deltrail); |
my (@predelcats,@predeltrails,%predelallitems,%sort_by_deltrail); |
if (ref($cathash) eq 'HASH') { |
if (ref($cathash) eq 'HASH') { |
Line 12419 sub modify_coursecategories {
|
Line 13066 sub modify_coursecategories {
|
$adds{$newitem} = 1; |
$adds{$newitem} = 1; |
} |
} |
} |
} |
|
if ($env{'form.placement'} eq '1') { |
|
if (ref($cathash) eq 'HASH') { |
|
my $newitem = 'placement::0'; |
|
if ($cathash->{$newitem} eq '') { |
|
$domconfig{'coursecategories'}{'cats'}{$newitem} = $env{'form.placement_pos'}; |
|
$adds{$newitem} = 1; |
|
} |
|
} else { |
|
my $newitem = 'placement::0'; |
|
$domconfig{'coursecategories'}{'cats'}{$newitem} = $env{'form.placement_pos'}; |
|
$adds{$newitem} = 1; |
|
} |
|
} |
if ($env{'form.addcategory_name'} ne '') { |
if ($env{'form.addcategory_name'} ne '') { |
if (($env{'form.addcategory_name'} ne 'instcode') && |
if (($env{'form.addcategory_name'} ne 'instcode') && |
($env{'form.addcategory_name'} ne 'communities')) { |
($env{'form.addcategory_name'} ne 'communities') && |
|
($env{'form.addcategory_name'} ne 'placement')) { |
my $newitem = &escape($env{'form.addcategory_name'}).'::0'; |
my $newitem = &escape($env{'form.addcategory_name'}).'::0'; |
$domconfig{'coursecategories'}{'cats'}{$newitem} = $env{'form.addcategory_pos'}; |
$domconfig{'coursecategories'}{'cats'}{$newitem} = $env{'form.addcategory_pos'}; |
$adds{$newitem} = 1; |
$adds{$newitem} = 1; |
Line 13016 sub modify_coursedefaults {
|
Line 13677 sub modify_coursedefaults {
|
my ($dom,$lastactref,%domconfig) = @_; |
my ($dom,$lastactref,%domconfig) = @_; |
my ($resulttext,$errors,%changes,%defaultshash); |
my ($resulttext,$errors,%changes,%defaultshash); |
my %defaultchecked = ( |
my %defaultchecked = ( |
|
'canuse_pdfforms' => 'off', |
'uselcmath' => 'on', |
'uselcmath' => 'on', |
'usejsme' => 'on' |
'usejsme' => 'on' |
); |
); |
my @toggles = ('uselcmath','usejsme'); |
my @toggles = ('canuse_pdfforms','uselcmath','usejsme'); |
my @numbers = ('anonsurvey_threshold','uploadquota_official','uploadquota_unofficial', |
my @numbers = ('anonsurvey_threshold','uploadquota_official','uploadquota_unofficial', |
'uploadquota_community','uploadquota_textbook','mysqltables_official', |
'uploadquota_community','uploadquota_textbook','uploadquota_placement', |
'mysqltables_unofficial','mysqltables_community','mysqltables_textbook'); |
'mysqltables_official','mysqltables_unofficial','mysqltables_community', |
my @types = ('official','unofficial','community','textbook'); |
'mysqltables_textbook','mysqltables_placement'); |
|
my @types = ('official','unofficial','community','textbook','placement'); |
my %staticdefaults = ( |
my %staticdefaults = ( |
anonsurvey_threshold => 10, |
anonsurvey_threshold => 10, |
uploadquota => 500, |
uploadquota => 500, |
postsubmit => 60, |
postsubmit => 60, |
mysqltables => 172800, |
mysqltables => 172800, |
); |
); |
|
my %texoptions = ( |
|
MathJax => 'MathJax', |
|
mimetex => &mt('Convert to Images'), |
|
tth => &mt('TeX to HTML'), |
|
); |
$defaultshash{'coursedefaults'} = {}; |
$defaultshash{'coursedefaults'} = {}; |
|
|
if (ref($domconfig{'coursedefaults'}) ne 'HASH') { |
if (ref($domconfig{'coursedefaults'}) ne 'HASH') { |
Line 13090 sub modify_coursedefaults {
|
Line 13757 sub modify_coursedefaults {
|
} |
} |
} |
} |
} |
} |
|
my $texengine; |
|
if ($env{'form.texengine'} =~ /^(MathJax|mimetex|tth)$/) { |
|
$texengine = $env{'form.texengine'}; |
|
if ($defaultshash{'coursedefaults'}{'texengine'} eq '') { |
|
unless ($texengine eq 'MathJax') { |
|
$changes{'texengine'} = 1; |
|
} |
|
} elsif ($defaultshash{'coursedefaults'}{'texengine'} ne $texengine) { |
|
$changes{'texengine'} = 1; |
|
} |
|
} |
|
if ($texengine ne '') { |
|
$defaultshash{'coursedefaults'}{'texengine'} = $texengine; |
|
} |
my $currclone = $domconfig{'coursedefaults'}{'canclone'}; |
my $currclone = $domconfig{'coursedefaults'}{'canclone'}; |
my @currclonecode; |
my @currclonecode; |
if (ref($currclone) eq 'HASH') { |
if (ref($currclone) eq 'HASH') { |
Line 13208 sub modify_coursedefaults {
|
Line 13889 sub modify_coursedefaults {
|
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
if (keys(%changes) > 0) { |
if (keys(%changes) > 0) { |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
if (($changes{'uploadquota'}) || ($changes{'postsubmit'}) || |
if (($changes{'canuse_pdfforms'}) || ($changes{'uploadquota'}) || ($changes{'postsubmit'}) || |
($changes{'coursecredits'}) || ($changes{'uselcmath'}) || ($changes{'usejsme'}) || |
($changes{'coursecredits'}) || ($changes{'uselcmath'}) || ($changes{'usejsme'}) || |
($changes{'canclone'}) || ($changes{'mysqltables'})) { |
($changes{'canclone'}) || ($changes{'mysqltables'}) || ($changes{'texengine'})) { |
foreach my $item ('uselcmath','usejsme') { |
foreach my $item ('canuse_pdfforms','uselcmath','usejsme','texengine') { |
if ($changes{$item}) { |
if ($changes{$item}) { |
$domdefaults{$item}=$defaultshash{'coursedefaults'}{$item}; |
$domdefaults{$item}=$defaultshash{'coursedefaults'}{$item}; |
} |
} |
Line 13262 sub modify_coursedefaults {
|
Line 13943 sub modify_coursedefaults {
|
} |
} |
$resulttext = &mt('Changes made:').'<ul>'; |
$resulttext = &mt('Changes made:').'<ul>'; |
foreach my $item (sort(keys(%changes))) { |
foreach my $item (sort(keys(%changes))) { |
if ($item eq 'uselcmath') { |
if ($item eq 'canuse_pdfforms') { |
|
if ($env{'form.'.$item} eq '1') { |
|
$resulttext .= '<li>'.&mt("Course/Community users can create/upload PDF forms set to 'on'").'</li>'; |
|
} else { |
|
$resulttext .= '<li>'.&mt('Course/Community users can create/upload PDF forms set to "off"').'</li>'; |
|
} |
|
} elsif ($item eq 'uselcmath') { |
if ($env{'form.'.$item} eq '1') { |
if ($env{'form.'.$item} eq '1') { |
$resulttext .= '<li>'.&mt('Math preview uses LON-CAPA previewer (javascript), if supported by browser.').'</li>'; |
$resulttext .= '<li>'.&mt('Math preview uses LON-CAPA previewer (javascript), if supported by browser.').'</li>'; |
} else { |
} else { |
Line 13274 sub modify_coursedefaults {
|
Line 13961 sub modify_coursedefaults {
|
} else { |
} else { |
$resulttext .= '<li>'.&mt('Molecule editor uses JME (Java), if supported by client OS.').'</li>'; |
$resulttext .= '<li>'.&mt('Molecule editor uses JME (Java), if supported by client OS.').'</li>'; |
} |
} |
|
} elsif ($item eq 'texengine') { |
|
if ($defaultshash{'coursedefaults'}{'texengine'} ne '') { |
|
$resulttext .= '<li>'.&mt('Default method to display mathematics set to: "[_1]"', |
|
$texoptions{$defaultshash{'coursedefaults'}{'texengine'}}).'</li>'; |
|
} |
} elsif ($item eq 'anonsurvey_threshold') { |
} elsif ($item eq 'anonsurvey_threshold') { |
$resulttext .= '<li>'.&mt('Responder count required for display of anonymous survey submissions set to [_1].',$defaultshash{'coursedefaults'}{'anonsurvey_threshold'}).'</li>'; |
$resulttext .= '<li>'.&mt('Responder count required for display of anonymous survey submissions set to [_1].',$defaultshash{'coursedefaults'}{'anonsurvey_threshold'}).'</li>'; |
} elsif ($item eq 'uploadquota') { |
} elsif ($item eq 'uploadquota') { |
Line 13282 sub modify_coursedefaults {
|
Line 13974 sub modify_coursedefaults {
|
'<li>'.&mt('Official courses: [_1] MB','<b>'.$defaultshash{'coursedefaults'}{'uploadquota'}{'official'}.'</b>').'</li>'. |
'<li>'.&mt('Official courses: [_1] MB','<b>'.$defaultshash{'coursedefaults'}{'uploadquota'}{'official'}.'</b>').'</li>'. |
'<li>'.&mt('Unofficial courses: [_1] MB','<b>'.$defaultshash{'coursedefaults'}{'uploadquota'}{'unofficial'}.'</b>').'</li>'. |
'<li>'.&mt('Unofficial courses: [_1] MB','<b>'.$defaultshash{'coursedefaults'}{'uploadquota'}{'unofficial'}.'</b>').'</li>'. |
'<li>'.&mt('Textbook courses: [_1] MB','<b>'.$defaultshash{'coursedefaults'}{'uploadquota'}{'textbook'}.'</b>').'</li>'. |
'<li>'.&mt('Textbook courses: [_1] MB','<b>'.$defaultshash{'coursedefaults'}{'uploadquota'}{'textbook'}.'</b>').'</li>'. |
|
'<li>'.&mt('Placement tests: [_1] MB','<b>'.$defaultshash{'coursedefaults'}{'uploadquota'}{'placement'}.'</b>').'</li>'. |
'<li>'.&mt('Communities: [_1] MB','<b>'.$defaultshash{'coursedefaults'}{'uploadquota'}{'community'}.'</b>').'</li>'. |
'<li>'.&mt('Communities: [_1] MB','<b>'.$defaultshash{'coursedefaults'}{'uploadquota'}{'community'}.'</b>').'</li>'. |
'</ul>'. |
'</ul>'. |
'</li>'; |
'</li>'; |
Line 13295 sub modify_coursedefaults {
|
Line 13987 sub modify_coursedefaults {
|
'<li>'.&mt('Official courses: [_1] s','<b>'.$defaultshash{'coursedefaults'}{'mysqltables'}{'official'}.'</b>').'</li>'. |
'<li>'.&mt('Official courses: [_1] s','<b>'.$defaultshash{'coursedefaults'}{'mysqltables'}{'official'}.'</b>').'</li>'. |
'<li>'.&mt('Unofficial courses: [_1] s','<b>'.$defaultshash{'coursedefaults'}{'mysqltables'}{'unofficial'}.'</b>').'</li>'. |
'<li>'.&mt('Unofficial courses: [_1] s','<b>'.$defaultshash{'coursedefaults'}{'mysqltables'}{'unofficial'}.'</b>').'</li>'. |
'<li>'.&mt('Textbook courses: [_1] s','<b>'.$defaultshash{'coursedefaults'}{'mysqltables'}{'textbook'}.'</b>').'</li>'. |
'<li>'.&mt('Textbook courses: [_1] s','<b>'.$defaultshash{'coursedefaults'}{'mysqltables'}{'textbook'}.'</b>').'</li>'. |
|
'<li>'.&mt('Placement tests: [_1] s','<b>'.$defaultshash{'coursedefaults'}{'mysqltables'}{'placement'}.'</b>').'</li>'. |
'<li>'.&mt('Communities: [_1] s','<b>'.$defaultshash{'coursedefaults'}{'mysqltables'}{'community'}.'</b>').'</li>'. |
'<li>'.&mt('Communities: [_1] s','<b>'.$defaultshash{'coursedefaults'}{'mysqltables'}{'community'}.'</b>').'</li>'. |
'</ul>'. |
'</ul>'. |
'</li>'; |
'</li>'; |
Line 13330 sub modify_coursedefaults {
|
Line 14023 sub modify_coursedefaults {
|
$resulttext .= &mt('Unofficial courses'); |
$resulttext .= &mt('Unofficial courses'); |
} elsif ($type eq 'textbook') { |
} elsif ($type eq 'textbook') { |
$resulttext .= &mt('Textbook courses'); |
$resulttext .= &mt('Textbook courses'); |
|
} elsif ($type eq 'placement') { |
|
$resulttext .= &mt('Placement tests'); |
} |
} |
$resulttext .= ' -- '.$display.'</li>'; |
$resulttext .= ' -- '.$display.'</li>'; |
} |
} |
Line 13381 sub modify_coursedefaults {
|
Line 14076 sub modify_coursedefaults {
|
sub modify_selfenrollment { |
sub modify_selfenrollment { |
my ($dom,$lastactref,%domconfig) = @_; |
my ($dom,$lastactref,%domconfig) = @_; |
my ($resulttext,$errors,%changes,%selfenrollhash,%ordered); |
my ($resulttext,$errors,%changes,%selfenrollhash,%ordered); |
my @types = ('official','unofficial','community','textbook'); |
my @types = ('official','unofficial','community','textbook','placement'); |
my %titles = &tool_titles(); |
my %titles = &tool_titles(); |
my %descs = &Apache::lonuserutils::selfenroll_default_descs(); |
my %descs = &Apache::lonuserutils::selfenroll_default_descs(); |
($ordered{'admin'},my $titlesref) = &Apache::lonuserutils::get_selfenroll_titles(); |
($ordered{'admin'},my $titlesref) = &Apache::lonuserutils::get_selfenroll_titles(); |
Line 13598 sub modify_selfenrollment {
|
Line 14293 sub modify_selfenrollment {
|
$resulttext .= '</ul></li>'; |
$resulttext .= '</ul></li>'; |
} |
} |
} |
} |
if ((exists($changes{'admin'})) || (exists($changes{'default'}))) { |
} |
my $cachetime = 24*60*60; |
if ((exists($changes{'admin'})) || (exists($changes{'default'}))) { |
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); |
my $cachetime = 24*60*60; |
if (ref($lastactref) eq 'HASH') { |
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); |
$lastactref->{'domdefaults'} = 1; |
if (ref($lastactref) eq 'HASH') { |
} |
$lastactref->{'domdefaults'} = 1; |
} |
} |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
Line 13628 sub modify_usersessions {
|
Line 14323 sub modify_usersessions {
|
); |
); |
my @prefixes = ('remote','hosted','spares'); |
my @prefixes = ('remote','hosted','spares'); |
my @lcversions = &Apache::lonnet::all_loncaparevs(); |
my @lcversions = &Apache::lonnet::all_loncaparevs(); |
my (%by_ip,%by_location,@intdoms); |
my (%by_ip,%by_location,@intdoms,@instdoms); |
&build_location_hashes(\@intdoms,\%by_ip,\%by_location); |
&build_location_hashes(\@intdoms,\%by_ip,\%by_location,\@instdoms); |
my @locations = sort(keys(%by_location)); |
my @locations = sort(keys(%by_location)); |
my (%defaultshash,%changes); |
my (%defaultshash,%changes); |
foreach my $prefix (@prefixes) { |
foreach my $prefix (@prefixes) { |
Line 13945 sub modify_usersessions {
|
Line 14640 sub modify_usersessions {
|
return $resulttext; |
return $resulttext; |
} |
} |
|
|
|
sub modify_ssl { |
|
my ($dom,$lastactref,%domconfig) = @_; |
|
my (%by_ip,%by_location,@intdoms,@instdoms); |
|
&build_location_hashes(\@intdoms,\%by_ip,\%by_location,\@instdoms); |
|
my @locations = sort(keys(%by_location)); |
|
my %servers = &Apache::lonnet::internet_dom_servers($dom); |
|
my (%defaultshash,%changes); |
|
my $action = 'ssl'; |
|
my @prefixes = ('connto','connfrom','replication'); |
|
foreach my $prefix (@prefixes) { |
|
$defaultshash{$action}{$prefix} = {}; |
|
} |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
|
my $resulttext; |
|
my %iphost = &Apache::lonnet::get_iphost(); |
|
my @reptypes = ('certreq','nocertreq'); |
|
my @connecttypes = ('dom','intdom','other'); |
|
my %types = ( |
|
connto => \@connecttypes, |
|
connfrom => \@connecttypes, |
|
replication => \@reptypes, |
|
); |
|
foreach my $prefix (sort(keys(%types))) { |
|
foreach my $type (@{$types{$prefix}}) { |
|
if (($prefix eq 'connto') || ($prefix eq 'connfrom')) { |
|
my $value = 'yes'; |
|
if ($env{'form.'.$prefix.'_'.$type} =~ /^(no|req)$/) { |
|
$value = $env{'form.'.$prefix.'_'.$type}; |
|
} |
|
if (ref($domconfig{$action}{$prefix}) eq 'HASH') { |
|
if ($domconfig{$action}{$prefix}{$type} ne '') { |
|
if ($value ne $domconfig{$action}{$prefix}{$type}) { |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
$defaultshash{$action}{$prefix}{$type} = $value; |
|
} else { |
|
$defaultshash{$action}{$prefix}{$type} = $value; |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
} else { |
|
$defaultshash{$action}{$prefix}{$type} = $value; |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
if (($type eq 'dom') && (keys(%servers) == 1)) { |
|
delete($changes{$prefix}{$type}); |
|
} elsif (($type eq 'intdom') && (@instdoms == 1)) { |
|
delete($changes{$prefix}{$type}); |
|
} elsif (($type eq 'other') && (keys(%by_location) == 0)) { |
|
delete($changes{$prefix}{$type}); |
|
} |
|
} elsif ($prefix eq 'replication') { |
|
if (@locations > 0) { |
|
my $inuse = $env{'form.'.$prefix.'_'.$type.'_inuse'}; |
|
my @vals = &Apache::loncommon::get_env_multiple('form.'.$prefix.'_'.$type); |
|
my @okvals; |
|
foreach my $val (@vals) { |
|
if ($val =~ /:/) { |
|
my @items = split(/:/,$val); |
|
foreach my $item (@items) { |
|
if (ref($by_location{$item}) eq 'ARRAY') { |
|
push(@okvals,$item); |
|
} |
|
} |
|
} else { |
|
if (ref($by_location{$val}) eq 'ARRAY') { |
|
push(@okvals,$val); |
|
} |
|
} |
|
} |
|
@okvals = sort(@okvals); |
|
if (ref($domconfig{$action}) eq 'HASH') { |
|
if (ref($domconfig{$action}{$prefix}) eq 'HASH') { |
|
if (ref($domconfig{$action}{$prefix}{$type}) eq 'ARRAY') { |
|
if ($inuse == 0) { |
|
$changes{$prefix}{$type} = 1; |
|
} else { |
|
$defaultshash{$action}{$prefix}{$type} = \@okvals; |
|
my @changed = &Apache::loncommon::compare_arrays($domconfig{$action}{$prefix}{$type},$defaultshash{$action}{$prefix}{$type}); |
|
if (@changed > 0) { |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
} |
|
} else { |
|
if ($inuse == 1) { |
|
$defaultshash{$action}{$prefix}{$type} = \@okvals; |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
} |
|
} else { |
|
if ($inuse == 1) { |
|
$defaultshash{$action}{$prefix}{$type} = \@okvals; |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
} |
|
} else { |
|
if ($inuse == 1) { |
|
$defaultshash{$action}{$prefix}{$type} = \@okvals; |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
my $nochgmsg = &mt('No changes made to LON-CAPA SSL settings'); |
|
if (keys(%changes) > 0) { |
|
my $putresult = &Apache::lonnet::put_dom('configuration',\%defaultshash, |
|
$dom); |
|
if ($putresult eq 'ok') { |
|
if (ref($defaultshash{$action}) eq 'HASH') { |
|
if (ref($defaultshash{$action}{'replication'}) eq 'HASH') { |
|
$domdefaults{'replication'} = $defaultshash{$action}{'replication'}; |
|
} |
|
if (ref($defaultshash{$action}{'connto'}) eq 'HASH') { |
|
$domdefaults{'connto'} = $domconfig{$action}{'connto'}; |
|
} |
|
if (ref($defaultshash{$action}{'connfrom'}) eq 'HASH') { |
|
$domdefaults{'connfrom'} = $domconfig{$action}{'connfrom'}; |
|
} |
|
} |
|
my $cachetime = 24*60*60; |
|
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); |
|
if (ref($lastactref) eq 'HASH') { |
|
$lastactref->{'domdefaults'} = 1; |
|
} |
|
if (keys(%changes) > 0) { |
|
my %titles = &ssl_titles(); |
|
$resulttext = &mt('Changes made:').'<ul>'; |
|
foreach my $prefix (@prefixes) { |
|
if (ref($changes{$prefix}) eq 'HASH') { |
|
$resulttext .= '<li>'.$titles{$prefix}.'<ul>'; |
|
foreach my $type (@{$types{$prefix}}) { |
|
if (defined($changes{$prefix}{$type})) { |
|
my $newvalue; |
|
if (ref($defaultshash{$action}) eq 'HASH') { |
|
if (ref($defaultshash{$action}{$prefix})) { |
|
if (($prefix eq 'connto') || ($prefix eq 'connfrom')) { |
|
$newvalue = $titles{$defaultshash{$action}{$prefix}{$type}}; |
|
} elsif (ref($defaultshash{$action}{$prefix}{$type}) eq 'ARRAY') { |
|
if (@{$defaultshash{$action}{$prefix}{$type}} > 0) { |
|
$newvalue = join(', ',@{$defaultshash{$action}{$prefix}{$type}}); |
|
} |
|
} |
|
} |
|
if ($newvalue eq '') { |
|
$resulttext .= '<li>'.&mt('[_1] set to: none',$titles{$type}).'</li>'; |
|
} else { |
|
$resulttext .= '<li>'.&mt('[_1] set to: [_2].',$titles{$type},$newvalue).'</li>'; |
|
} |
|
} |
|
} |
|
} |
|
$resulttext .= '</ul>'; |
|
} |
|
} |
|
} else { |
|
$resulttext = $nochgmsg; |
|
} |
|
} else { |
|
$resulttext = '<span class="LC_error">'. |
|
&mt('An error occurred: [_1]',$putresult).'</span>'; |
|
} |
|
} else { |
|
$resulttext = $nochgmsg; |
|
} |
|
return $resulttext; |
|
} |
|
|
|
sub modify_trust { |
|
my ($dom,$lastactref,%domconfig) = @_; |
|
my (%by_ip,%by_location,@intdoms,@instdoms); |
|
&build_location_hashes(\@intdoms,\%by_ip,\%by_location,\@instdoms); |
|
my @locations = sort(keys(%by_location)); |
|
my @prefixes = qw(content shared enroll othcoau coaurem domroles catalog reqcrs msg); |
|
my @types = ('exc','inc'); |
|
my (%defaultshash,%changes); |
|
foreach my $prefix (@prefixes) { |
|
$defaultshash{'trust'}{$prefix} = {}; |
|
} |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
|
my $resulttext; |
|
foreach my $prefix (@prefixes) { |
|
foreach my $type (@types) { |
|
my $inuse = $env{'form.'.$prefix.'_'.$type.'_inuse'}; |
|
my @vals = &Apache::loncommon::get_env_multiple('form.'.$prefix.'_'.$type); |
|
my @okvals; |
|
foreach my $val (@vals) { |
|
if ($val =~ /:/) { |
|
my @items = split(/:/,$val); |
|
foreach my $item (@items) { |
|
if (ref($by_location{$item}) eq 'ARRAY') { |
|
push(@okvals,$item); |
|
} |
|
} |
|
} else { |
|
if (ref($by_location{$val}) eq 'ARRAY') { |
|
push(@okvals,$val); |
|
} |
|
} |
|
} |
|
@okvals = sort(@okvals); |
|
if (ref($domconfig{'trust'}) eq 'HASH') { |
|
if (ref($domconfig{'trust'}{$prefix}) eq 'HASH') { |
|
if (ref($domconfig{'trust'}{$prefix}{$type}) eq 'ARRAY') { |
|
if ($inuse == 0) { |
|
$changes{$prefix}{$type} = 1; |
|
} else { |
|
$defaultshash{'trust'}{$prefix}{$type} = \@okvals; |
|
my @changed = &Apache::loncommon::compare_arrays($domconfig{'trust'}{$prefix}{$type},$defaultshash{'trust'}{$prefix}{$type}); |
|
if (@changed > 0) { |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
} |
|
} else { |
|
if ($inuse == 1) { |
|
$defaultshash{'trust'}{$prefix}{$type} = \@okvals; |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
} |
|
} else { |
|
if ($inuse == 1) { |
|
$defaultshash{'trust'}{$prefix}{$type} = \@okvals; |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
} |
|
} else { |
|
if ($inuse == 1) { |
|
$defaultshash{'trust'}{$prefix}{$type} = \@okvals; |
|
$changes{$prefix}{$type} = 1; |
|
} |
|
} |
|
} |
|
} |
|
my $nochgmsg = &mt('No changes made to trust settings.'); |
|
if (keys(%changes) > 0) { |
|
my $putresult = &Apache::lonnet::put_dom('configuration',\%defaultshash, |
|
$dom); |
|
if ($putresult eq 'ok') { |
|
if (ref($defaultshash{'trust'}) eq 'HASH') { |
|
foreach my $prefix (@prefixes) { |
|
if (ref($defaultshash{'trust'}{$prefix}) eq 'HASH') { |
|
$domdefaults{'trust'.$prefix} = $defaultshash{'trust'}{$prefix}; |
|
} |
|
} |
|
} |
|
my $cachetime = 24*60*60; |
|
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); |
|
if (ref($lastactref) eq 'HASH') { |
|
$lastactref->{'domdefaults'} = 1; |
|
} |
|
if (keys(%changes) > 0) { |
|
my %lt = &trust_titles(); |
|
$resulttext = &mt('Changes made:').'<ul>'; |
|
foreach my $prefix (@prefixes) { |
|
if (ref($changes{$prefix}) eq 'HASH') { |
|
$resulttext .= '<li>'.$lt{$prefix}.'<ul>'; |
|
foreach my $type (@types) { |
|
if (defined($changes{$prefix}{$type})) { |
|
my $newvalue; |
|
if (ref($defaultshash{'trust'}) eq 'HASH') { |
|
if (ref($defaultshash{'trust'}{$prefix})) { |
|
if (ref($defaultshash{'trust'}{$prefix}{$type}) eq 'ARRAY') { |
|
if (@{$defaultshash{'trust'}{$prefix}{$type}} > 0) { |
|
$newvalue = join(', ',@{$defaultshash{'trust'}{$prefix}{$type}}); |
|
} |
|
} |
|
} |
|
} |
|
if ($newvalue eq '') { |
|
$resulttext .= '<li>'.&mt('[_1] set to: none',$lt{$type}).'</li>'; |
|
} else { |
|
$resulttext .= '<li>'.&mt('[_1] set to: [_2].',$lt{$type},$newvalue).'</li>'; |
|
} |
|
} |
|
} |
|
$resulttext .= '</ul>'; |
|
} |
|
} |
|
$resulttext .= '</ul>'; |
|
} else { |
|
$resulttext = $nochgmsg; |
|
} |
|
} else { |
|
$resulttext = '<span class="LC_error">'. |
|
&mt('An error occurred: [_1]',$putresult).'</span>'; |
|
} |
|
} else { |
|
$resulttext = $nochgmsg; |
|
} |
|
return $resulttext; |
|
} |
|
|
sub modify_loadbalancing { |
sub modify_loadbalancing { |
my ($dom,%domconfig) = @_; |
my ($dom,%domconfig) = @_; |
my $primary_id = &Apache::lonnet::domain($dom,'primary'); |
my $primary_id = &Apache::lonnet::domain($dom,'primary'); |
Line 14885 function toggleDisplay(domForm,caller) {
|
Line 15872 function toggleDisplay(domForm,caller) {
|
var optionsElement = domForm.coursecredits; |
var optionsElement = domForm.coursecredits; |
var checkval = 1; |
var checkval = 1; |
var dispval = 'block'; |
var dispval = 'block'; |
|
var selfcreateRegExp = /^cancreate_emailverified/; |
if (caller == 'emailoptions') { |
if (caller == 'emailoptions') { |
optionsElement = domForm.cancreate_email; |
optionsElement = domForm.cancreate_email; |
} |
} |
Line 14895 function toggleDisplay(domForm,caller) {
|
Line 15883 function toggleDisplay(domForm,caller) {
|
optionsElement = domForm.canclone; |
optionsElement = domForm.canclone; |
checkval = 'instcode'; |
checkval = 'instcode'; |
} |
} |
|
if (selfcreateRegExp.test(caller)) { |
|
optionsElement = domForm.elements[caller]; |
|
checkval = 'other'; |
|
dispval = 'inline' |
|
} |
if (optionsElement.length) { |
if (optionsElement.length) { |
var currval; |
var currval; |
for (var i=0; i<optionsElement.length; i++) { |
for (var i=0; i<optionsElement.length; i++) { |