--- loncom/interface/domainprefs.pm 2016/10/24 22:37:24 1.160.6.74 +++ loncom/interface/domainprefs.pm 2015/06/15 20:11:56 1.266 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.160.6.74 2016/10/24 22:37:24 raeburn Exp $ +# $Id: domainprefs.pm,v 1.266 2015/06/15 20:11:56 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -220,8 +220,8 @@ sub handler { 'autoupdate','autocreate','directorysrch','contacts', 'usercreation','selfcreation','usermodification','scantron', 'requestcourses','requestauthor','coursecategories', - 'serverstatuses','helpsettings','coursedefaults', - 'selfenrollment','usersessions'); + 'serverstatuses','helpsettings', + 'coursedefaults','selfenrollment','usersessions'); my %existing; if (ref($domconfig{'loadbalancing'}) eq 'HASH') { %existing = %{$domconfig{'loadbalancing'}}; @@ -304,11 +304,9 @@ sub handler { modify => \&modify_autocreate, }, 'directorysrch' => - { text => 'Directory searches', + { text => 'Institutional directory searches', help => 'Domain_Configuration_InstDirectory_Search', - header => [{col1 => 'Institutional Directory Setting', - col2 => 'Value',}, - {col1 => 'LON-CAPA Directory Setting', + header => [{col1 => 'Setting', col2 => 'Value',}], print => \&print_directorysrch, modify => \&modify_directorysrch, @@ -414,12 +412,10 @@ sub handler { modify => \&modify_serverstatuses, }, 'helpsettings' => - {text => 'Support settings', + {text => 'Help page settings', help => 'Domain_Configuration_Help_Settings', - header => [{col1 => 'Help Page Settings (logged-in users)', - col2 => 'Value'}, - {col1 => 'Helpdesk Roles', - col2 => 'Settings'},], + header => [{col1 => 'Help Settings (logged-in users)', + col2 => 'Value'}], print => \&print_helpsettings, modify => \&modify_helpsettings, }, @@ -445,6 +441,14 @@ sub handler { print => \&print_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' => {text => 'User session hosting/offloading', help => 'Domain_Configuration_User_Sessions', @@ -653,22 +657,6 @@ sub print_config_box { $output = &coursecategories_javascript($settings); } elsif ($action eq 'defaults') { $output = &defaults_javascript($settings); - } elsif ($action eq 'helpsettings') { - my (%privs,%levelscurrent); - my %full=(); - my %levels=( - course => {}, - domain => {}, - system => {}, - ); - my $context = 'domain'; - my $crstype = 'Course'; - my $formname = 'display'; - &Apache::lonuserutils::custom_role_privs(\%privs,\%full,\%levels,\%levelscurrent); - my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); - $output = - &Apache::lonuserutils::custom_roledefs_js($context,$crstype,$formname,\%full, - \@templateroles); } $output .= ' @@ -686,7 +674,6 @@ sub print_config_box { my $colspan = ''; my $rightcolspan = ''; if (($action eq 'rolecolors') || ($action eq 'defaults') || - ($action eq 'directorysrch') || (($action eq 'login') && ($numheaders < 4))) { $colspan = ' colspan="2"'; } @@ -704,8 +691,7 @@ sub print_config_box { $rowtotal ++; if (($action eq 'autoupdate') || ($action eq 'usercreation') || ($action eq 'selfcreation') || ($action eq 'usermodification') || ($action eq 'defaults') || ($action eq 'coursedefaults') || - ($action eq 'selfenrollment') || ($action eq 'usersessions') || ($action eq 'directorysrch') || - ($action eq 'helpsettings')) { + ($action eq 'selfenrollment') || ($action eq 'usersessions')) { $output .= $item->{'print'}->('top',$dom,$settings,\$rowtotal); } elsif ($action eq 'coursecategories') { $output .= $item->{'print'}->('top',$dom,$item,$settings,\$rowtotal); @@ -760,8 +746,7 @@ sub print_config_box { } $rowtotal ++; } elsif (($action eq 'usermodification') || ($action eq 'coursedefaults') || - ($action eq 'defaults') || ($action eq 'directorysrch') || - ($action eq 'helpsettings')) { + ($action eq 'defaults')) { $output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal); } elsif ($action eq 'login') { if ($numheaders == 4) { @@ -874,7 +859,7 @@ sub print_config_box { '. - ''."\n"; - $itemcount ++; - } $$rowtotal += $itemcount; return $datatable; @@ -3812,7 +3660,7 @@ sub spares_row { '. &mt('[_1] when busy, offloads to:' ,''.$server.'').'
'. - ''."\n". + ''."\n". ''. "\n"; @@ -4707,8 +4555,7 @@ sub email_as_username { sub captcha_choice { my ($context,$settings,$itemcount) = @_; - my ($keyentry,$currpub,$currpriv,%checked,$rowname,$pubtext,$privtext, - $vertext,$currver); + my ($keyentry,$currpub,$currpriv,%checked,$rowname,$pubtext,$privtext); my %lt = &captcha_phrases(); $keyentry = 'hidden'; if ($context eq 'cancreate') { @@ -4726,11 +4573,6 @@ sub captcha_choice { $pubtext = $lt{'pub'}; $privtext = $lt{'priv'}; $keyentry = 'text'; - $vertext = $lt{'ver'}; - $currver = $settings->{'recaptchaversion'}; - if ($currver ne '2') { - $currver = 1; - } } if (ref($settings->{'recaptchakeys'}) eq 'HASH') { $currpub = $settings->{'recaptchakeys'}{'public'}; @@ -4764,11 +4606,7 @@ sub captcha_choice { $currpub.'" size="40" />
'."\n". ''.$privtext.' '."\n". '
'. - ''.$vertext.' '."\n". - '
'. - '
'; - if ($action eq 'login') { + if (($action eq 'login') || ($action eq 'directorysrch')) { $output .= ' '; } elsif ($action eq 'serverstatuses') { @@ -918,12 +903,13 @@ sub print_config_box { $rowtotal ++; if ($action eq 'quotas') { $output .= &print_quotas($dom,$settings,\$rowtotal,$action); - } elsif (($action eq 'autoenroll') || ($action eq 'autocreate') || - ($action eq 'contacts') || ($action eq 'serverstatuses') || - ($action eq 'loadbalancing')) { + } elsif (($action eq 'autoenroll') || ($action eq 'autocreate') || ($action eq 'directorysrch') || + ($action eq 'contacts') || ($action eq 'serverstatuses') || ($action eq 'loadbalancing')) { $output .= $item->{'print'}->($dom,$settings,\$rowtotal); } elsif ($action eq 'scantron') { $output .= &print_scantronformat($r,$dom,$confname,$settings,\$rowtotal); + } elsif ($action eq 'helpsettings') { + $output .= &print_helpsettings($dom,$confname,$settings,\$rowtotal); } } $output .= ' @@ -2430,7 +2416,7 @@ ENDSCRIPT sub print_autoenroll { my ($dom,$settings,$rowtotal) = @_; my $autorun = &Apache::lonnet::auto_run(undef,$dom), - my ($defdom,$runon,$runoff,$coownerson,$coownersoff,$failsafe); + my ($defdom,$runon,$runoff,$coownerson,$coownersoff); if (ref($settings) eq 'HASH') { if (exists($settings->{'run'})) { if ($settings->{'run'} eq '0') { @@ -2464,9 +2450,6 @@ sub print_autoenroll { if (exists($settings->{'sender_domain'})) { $defdom = $settings->{'sender_domain'}; } - if (exists($settings->{'autofailsafe'})) { - $failsafe = $settings->{'autofailsafe'}; - } } else { if ($autorun) { $runon = ' checked="checked" '; @@ -2502,12 +2485,8 @@ sub print_autoenroll { $coownerson.' value="1" />'.&mt('Yes').' '. ''. - ''. - ''. - ''; - $$rowtotal += 4; + ''; + $$rowtotal += 3; return $datatable; } @@ -2636,149 +2615,115 @@ sub print_autocreate { } sub print_directorysrch { - my ($position,$dom,$settings,$rowtotal) = @_; - my $datatable; - if ($position eq 'top') { - my $instsrchon = ' '; - my $instsrchoff = ' checked="checked" '; - my ($exacton,$containson,$beginson); - my $instlocalon = ' '; - my $instlocaloff = ' checked="checked" '; - if (ref($settings) eq 'HASH') { - if ($settings->{'available'} eq '1') { - $instsrchon = $instsrchoff; - $instsrchoff = ' '; - } - if ($settings->{'localonly'} eq '1') { - $instlocalon = $instlocaloff; - $instlocaloff = ' '; - } - if (ref($settings->{'searchtypes'}) eq 'ARRAY') { - foreach my $type (@{$settings->{'searchtypes'}}) { - if ($type eq 'exact') { - $exacton = ' checked="checked" '; - } elsif ($type eq 'contains') { - $containson = ' checked="checked" '; - } elsif ($type eq 'begins') { - $beginson = ' checked="checked" '; - } - } - } else { - if ($settings->{'searchtypes'} eq 'exact') { - $exacton = ' checked="checked" '; - } elsif ($settings->{'searchtypes'} eq 'contains') { - $containson = ' checked="checked" '; - } elsif ($settings->{'searchtypes'} eq 'specify') { + my ($dom,$settings,$rowtotal) = @_; + my $srchon = ' '; + my $srchoff = ' checked="checked" '; + my ($exacton,$containson,$beginson); + my $localon = ' '; + my $localoff = ' checked="checked" '; + if (ref($settings) eq 'HASH') { + if ($settings->{'available'} eq '1') { + $srchon = $srchoff; + $srchoff = ' '; + } + if ($settings->{'localonly'} eq '1') { + $localon = $localoff; + $localoff = ' '; + } + if (ref($settings->{'searchtypes'}) eq 'ARRAY') { + foreach my $type (@{$settings->{'searchtypes'}}) { + if ($type eq 'exact') { $exacton = ' checked="checked" '; + } elsif ($type eq 'contains') { $containson = ' checked="checked" '; + } elsif ($type eq 'begins') { + $beginson = ' checked="checked" '; } } - } - my ($searchtitles,$titleorder) = &sorted_searchtitles(); - my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); - - my $numinrow = 4; - my $cansrchrow = 0; - $datatable=''. - ''. - ''. - ''. - ''. - ''. - ''; - $$rowtotal += 2; - if (ref($usertypes) eq 'HASH') { - if (keys(%{$usertypes}) > 0) { - $datatable .= &insttypes_row($settings,$types,$usertypes,$dom, - $numinrow,$othertitle,'cansearch'); - $cansrchrow = 1; + } else { + if ($settings->{'searchtypes'} eq 'exact') { + $exacton = ' checked="checked" '; + } elsif ($settings->{'searchtypes'} eq 'contains') { + $containson = ' checked="checked" '; + } elsif ($settings->{'searchtypes'} eq 'specify') { + $exacton = ' checked="checked" '; + $containson = ' checked="checked" '; } } - if ($cansrchrow) { - $$rowtotal ++; - $datatable .= ''; - } else { - $datatable .= ''; + } + my ($searchtitles,$titleorder) = &sorted_searchtitles(); + my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); + + my $numinrow = 4; + my $cansrchrow = 0; + my $datatable=''. + ''. + ''. + ''. + ''. + ''. + ''; + $$rowtotal += 2; + if (ref($usertypes) eq 'HASH') { + if (keys(%{$usertypes}) > 0) { + $datatable .= &insttypes_row($settings,$types,$usertypes,$dom, + $numinrow,$othertitle,'cansearch'); + $cansrchrow = 1; } - $datatable .= ''; + $$rowtotal ++; + if ($cansrchrow) { + $datatable .= ''; } else { - my $domsrchon = ' checked="checked" '; - my $domsrchoff = ' '; - my $domlocalon = ' '; - my $domlocaloff = ' checked="checked" '; - if (ref($settings) eq 'HASH') { - if ($settings->{'lclocalonly'} eq '1') { - $domlocalon = $domlocaloff; - $domlocaloff = ' '; - } - if ($settings->{'lcavailable'} eq '0') { - $domsrchoff = $domsrchon; - $domsrchon = ' '; - } - } - $datatable=''. - ''. - ''. - ''. - ''. - ''. - ''; - $$rowtotal += 2; + $datatable .= ''; } + $datatable .= ''. + ''; + $$rowtotal ++; return $datatable; } @@ -2882,92 +2827,18 @@ sub print_contacts { } sub print_helpsettings { - my ($position,$dom,$settings,$rowtotal) = @_; - my $confname = $dom.'-domainconfig'; + my ($dom,$confname,$settings,$rowtotal) = @_; my ($datatable,$itemcount); - if ($position eq 'top') { - $itemcount = 1; - my (%choices,%defaultchecked,@toggles); - $choices{'submitbugs'} = &mt('Display link to: [_1]?', - &Apache::loncommon::modal_link('http://bugs.loncapa.org', - &mt('LON-CAPA bug tracker'),600,500)); - %defaultchecked = ('submitbugs' => 'on'); - @toggles = ('submitbugs'); - ($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked, - \%choices,$itemcount); - $$rowtotal ++; - } else { - my $css_class; - my %existing=&Apache::lonnet::dump('roles',$dom,$confname,'rolesdef_'); - my %customroles; - foreach my $key (keys(%existing)) { - if ($key=~/^rolesdef\_(\w+)$/) { - my $rolename = $1; - my %privs; - ($privs{'system'},$privs{'domain'},$privs{'course'}) = split(/\_/,$existing{$key}); - $customroles{$rolename} = \%privs; - } - } - my $count = 0; - my $context = 'domprefs'; - my $crstype = 'Course'; - foreach my $role (sort(keys(%customroles))) { - my $prefix = 'custhelp'.$count; - my %full=(); - my %levels= ( - course => {}, - domain => {}, - system => {}, - ); - my %levelscurrent=( - course => {}, - domain => {}, - system => {}, - ); - &Apache::lonuserutils::custom_role_privs($customroles{$role},\%full,\%levels,\%levelscurrent); - my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); - $css_class = $itemcount%2?' class="LC_odd_row"':''; - $datatable .= ''. - ''; - $count ++; - $itemcount ++; - } - $css_class = $itemcount%2?' class="LC_odd_row"':''; - my $newcust = 'custhelp'.$count; - my (%privs,%levelscurrent); - my %full=(); - my %levels= ( - course => {}, - domain => {}, - system => {}, - ); - &Apache::lonuserutils::custom_role_privs(\%privs,\%full,\%levels,\%levelscurrent); - my @templateroles = &Apache::lonuserutils::custom_template_roles($context,$crstype); - $datatable .= ''. - ''; - $count ++; - $$rowtotal += $count; - } + $itemcount = 1; + my (%choices,%defaultchecked,@toggles); + $choices{'submitbugs'} = &mt('Display link to: [_1]?', + &Apache::loncommon::modal_link('http://bugs.loncapa.org', + &mt('LON-CAPA bug tracker'),600,500)); + %defaultchecked = ('submitbugs' => 'on'); + @toggles = ('submitbugs',); + + ($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked, + \%choices,$itemcount); return $datatable; } @@ -3013,7 +2884,7 @@ sub radiobutton_prefs { } else { $datatable .= '
'.&mt($item->{'header'}->[0]->{'col1'}).'
'.&mt('Failsafe for no drops when institutional data missing').''. - '
'.&mt('Institutional directory search available?').' '. - '
'.&mt('Other domains can search institution?').' '. - '
'.&mt('Directory search available?').' '. + '
'.&mt('Other domains can search?').' '. + '
'.&mt('Supported search methods'). - ''; - foreach my $title (@{$titleorder}) { - if (defined($searchtitles->{$title})) { - my $check = ' '; - if (ref($settings) eq 'HASH') { - if (ref($settings->{'searchby'}) eq 'ARRAY') { - if (grep(/^\Q$title\E$/,@{$settings->{'searchby'}})) { - $check = ' checked="checked" '; - } + } + if ($cansrchrow) { + $$rowtotal ++; + $datatable .= ''; + } else { + $datatable .= ''; + } + $datatable .= ''; - $$rowtotal ++; - if ($cansrchrow) { - $datatable .= ''; - } else { - $datatable .= ''; - } - $datatable .= ''. - ''; - $$rowtotal ++; + } + $datatable .= '
'.&mt('Supported search methods'). + ''; + foreach my $title (@{$titleorder}) { + if (defined($searchtitles->{$title})) { + my $check = ' '; + if (ref($settings) eq 'HASH') { + if (ref($settings->{'searchby'}) eq 'ARRAY') { + if (grep(/^\Q$title\E$/,@{$settings->{'searchby'}})) { + $check = ' checked="checked" '; } } - $datatable .= ''; } + $datatable .= ''; } - $datatable .= '
'. - ''. + '
'.&mt('Search latitude').''. - ' '. - ' '. - '
'.&mt('LON-CAPA directory search available?').' '. - '
'.&mt('Other domains can search LON-CAPA domain?').' '. - '
'.&mt('Search latitude').''. + ' '. + ' '. + '
'.&mt('Existing helpdesk role:').' '. - ''.$role.'
'. - &Apache::lonuserutils::custom_role_header($context,$crstype, - \@templateroles,$prefix). - &Apache::lonuserutils::custom_role_table($crstype,\%full,\%levels, - \%levelscurrent,$prefix). - '
'. - ''.&mt('Name of new helpdesk role:').' '. - ''. - '
'. - &Apache::lonuserutils::custom_role_header($context,$crstype, - \@templateroles,$newcust). - &Apache::lonuserutils::custom_role_table('Course',\%full,\%levels, - \%levelscurrent,$newcust). - '

'. - '
'; } - $datatable .= + $datatable .= ''. '
'."\n"; %defaultchecked = ('postsubmit' => 'on'); @toggles = ('postsubmit'); - $current = { - 'postsubmit' => $postsubmitclient, - }; + my $current = { + 'postsubmit' => $postsubmitclient, + }; ($table,$itemcount) = &radiobutton_prefs($current,\@toggles,\%defaultchecked, \%choices,$itemcount,$onclick,$additional,'left'); $datatable .= $table; - $css_class = $itemcount%2 ? ' class="LC_odd_row"' : ''; - $datatable .= '
'. - $choices{'mysqltables'}. - ''. - ''; - foreach my $type (@types) { - $datatable .= ''; - } - $datatable .= '
'.&mt($type).'
'. - '
'."\n". + $currpriv.'" size="40" />'."\n". ''; return $output; } @@ -5563,7 +5401,7 @@ sub serverstatus_pages { sub defaults_javascript { my ($settings) = @_; - return unless (ref($settings) eq 'HASH'); + return unless (ref($settings) eq 'HASH'); if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH')) { my $maxnum = scalar(@{$settings->{'inststatusorder'}}); if ($maxnum eq '') { @@ -6305,7 +6143,6 @@ sub modify_login { $errors .= '
  • '.$puberror.'
  • '; if ((grep(/^\Q$lang\E$/,@currlangs)) && (!grep(/^\Q$lang\E$/,@delurls))) { - $loginhash{'login'}{'helpurl'}{$lang} = $domconfig{'login'}{'helpurl'}{$lang}; } } @@ -6329,7 +6166,7 @@ sub modify_login { if ($domservers{$lonhost}) { if (ref($domconfig{'login'}{'headtag'}{$lonhost}) eq 'HASH') { $currheadtagurls{$lonhost} = $domconfig{'login'}{'headtag'}{$lonhost}{'url'}; - $currexempt{$lonhost} = $domconfig{'login'}{'headtag'}{$lonhost}{'exempt'}; + $currexempt{$lonhost} = $domconfig{'login'}{'headtagexempt'}{$lonhost}{'exempt'} } } } @@ -6348,7 +6185,7 @@ sub modify_login { } elsif ($currheadtagurls{$lonhost}) { $loginhash{'login'}{'headtag'}{$lonhost}{'url'} = $currheadtagurls{$lonhost}; if ($currexempt{$lonhost}) { - if ((!exists($possexempt{$lonhost})) || ($possexempt{$lonhost} ne $currexempt{$lonhost})) { + if ((!exists($possexempt{$lonhost})) || ($possexempt{$lonhost} ne $currexempt{$lonhost})) { $changes{'headtag'}{$lonhost} = 1; } } elsif ($possexempt{$lonhost}) { @@ -6399,7 +6236,6 @@ sub modify_login { $errors .= '
  • '.$error.'
  • '; } } - &process_captcha('login',\%changes,$loginhash{'login'},$domconfig{'login'}); my $defaulthelpfile = '/adm/loginproblems.html'; @@ -6555,13 +6391,6 @@ sub modify_login { $chgtxt .= ''; $resulttext .= '
  • '.$chgtxt.'
  • '; } - } elsif ($item eq 'recaptchaversion') { - if (ref($loginhash{'login'}) eq 'HASH') { - if ($loginhash{'login'}{'captcha'} eq 'recaptcha') { - $resulttext .= '
  • '.&mt('ReCAPTCHA for helpdesk form set to version [_1]',$loginhash{'login'}{'recaptchaversion'}). - '
  • '; - } - } } else { $resulttext .= '
  • '.&mt("$title{$item} set to $offon[$env{'form.'.$item}]").'
  • '; } @@ -6581,6 +6410,7 @@ sub modify_login { return $resulttext; } + sub check_exempt_addresses { my ($iplist) = @_; $iplist =~ s/^\s+//; @@ -7490,7 +7320,7 @@ sub modify_quotas { my $newpos = $env{'form.'.$itemid}; $newpos =~ s/\D+//g; foreach my $item ('subject','title','publisher','author') { - next if ((($item eq 'author') || ($item eq 'publisher')) && + next if ((($item eq 'author') || ($item eq 'publisher')) && ($type eq 'templates')); $confhash{$type}{$key}{$item} = $env{'form.'.$type.'_'.$item.'_'.$i}; if ($domconfig{$action}{$type}{$key}{$item} ne $confhash{$type}{$key}{$item}) { @@ -7659,7 +7489,7 @@ sub modify_quotas { } } elsif ($confhash{'validation'}{'dc'} ne '') { $changes{'validation'}{'dc'} = $confhash{'validation'}{'dc'}; - } + } } else { if (ref($domconfig{'requestcourses'}) eq 'HASH') { if (ref($domconfig{'requestcourses'}{'validation'}) eq 'HASH') { @@ -8074,8 +7904,7 @@ sub modify_autoenroll { my $autorun = &Apache::lonnet::auto_run(undef,$dom), my %title = ( run => 'Auto-enrollment active', sender => 'Sender for notification messages', - coowners => 'Automatic assignment of co-ownership to instructors of record (institutional data)', - failsafe => 'Failsafe for no drops if institutional data missing for a section'); + coowners => 'Automatic assignment of co-ownership to instructors of record (institutional data)'); my @offon = ('off','on'); my $sender_uname = $env{'form.sender_uname'}; my $sender_domain = $env{'form.sender_domain'}; @@ -8085,17 +7914,11 @@ sub modify_autoenroll { $sender_domain = ''; } my $coowners = $env{'form.autoassign_coowners'}; - my $failsafe = $env{'form.autoenroll_failsafe'}; - $failsafe =~ s{^\s+|\s+$}{}g; - if ($failsafe =~ /\D/) { - undef($failsafe); - } my %autoenrollhash = ( autoenroll => { 'run' => $env{'form.autoenroll_run'}, 'sender_uname' => $sender_uname, 'sender_domain' => $sender_domain, 'co-owners' => $coowners, - 'autofailsafe' => $failsafe, } ); my $putresult = &Apache::lonnet::put_dom('configuration',\%autoenrollhash, @@ -8122,10 +7945,7 @@ sub modify_autoenroll { } } elsif ($coowners) { $changes{'coowners'} = 1; - } - if ($currautoenroll{'autofailsafe'} ne $failsafe) { - $changes{'autofailsafe'} = 1; - } + } if (keys(%changes) > 0) { $resulttext = &mt('Changes made:').''; } else { $resulttext = &mt('No changes made to auto-enrollment settings'); @@ -8436,10 +8245,8 @@ sub modify_directorysrch { $currdirsrch{$key} = $domconfig{'directorysrch'}{$key}; } } - my %title = ( available => 'Institutional directory search available', - localonly => 'Other domains can search institution', - lcavailable => 'LON-CAPA directory search available', - lclocalonly => 'Other domains can search LON-CAPA domain', + my %title = ( available => 'Directory search available', + localonly => 'Other domains can search', searchby => 'Search types', searchtypes => 'Search latitude'); my @offon = ('off','on'); @@ -8513,9 +8320,7 @@ sub modify_directorysrch { my %dirsrch_hash = ( directorysrch => { available => $env{'form.dirsrch_available'}, cansearch => \@cansearch, - localonly => $env{'form.dirsrch_instlocalonly'}, - lclocalonly => $env{'form.dirsrch_domlocalonly'}, - lcavailable => $env{'form.dirsrch_domavailable'}, + localonly => $env{'form.dirsrch_localonly'}, searchby => \@searchby, searchtypes => \@searchtypes, } @@ -8532,47 +8337,24 @@ sub modify_directorysrch { $changes{'available'} = 1; } } - if (exists($currdirsrch{'lcavailable'})) { - if ($currdirsrch{'lcavailable'} ne $env{'form.dirsrch_domavailable'}) { - $changes{'lcavailable'} = 1; - } - } else { - if ($env{'form.dirsrch_lcavailable'} eq '1') { - $changes{'lcavailable'} = 1; - } - } if (exists($currdirsrch{'localonly'})) { - if ($currdirsrch{'localonly'} ne $env{'form.dirsrch_instlocalonly'}) { - $changes{'localonly'} = 1; - } + if ($currdirsrch{'localonly'} ne $env{'form.dirsrch_localonly'}) { + $changes{'localonly'} = 1; + } } else { - if ($env{'form.dirsrch_instlocalonly'} eq '1') { + if ($env{'form.dirsrch_localonly'} eq '1') { $changes{'localonly'} = 1; } } - if (exists($currdirsrch{'lclocalonly'})) { - if ($currdirsrch{'lclocalonly'} ne $env{'form.dirsrch_domlocalonly'}) { - $changes{'lclocalonly'} = 1; - } - } else { - if ($env{'form.dirsrch_domlocalonly'} eq '1') { - $changes{'lclocalonly'} = 1; - } - } if (keys(%changes) > 0) { $resulttext = &mt('Changes made:').''; } else { - $resulttext = &mt('No changes made to directory search settings'); + $resulttext = &mt('No changes made to institution directory search settings'); } } else { $resulttext = ''. @@ -8810,8 +8592,7 @@ sub modify_usercreation { if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') { foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) { if (($item eq 'selfcreate') || ($item eq 'statustocreate') || - ($item eq 'captcha') || ($item eq 'recaptchakeys') || - ($item eq 'recaptchaversion')) { + ($item eq 'captcha') || ($item eq 'recaptchakeys')) { $save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; } else { $curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; @@ -9035,7 +8816,6 @@ sub modify_selfcreation { foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) { if (($item eq 'selfcreate') || ($item eq 'statustocreate') || ($item eq 'captcha') || ($item eq 'recaptchakeys') || - ($item eq 'recaptchaversion') || ($item eq 'emailusername') || ($item eq 'notify') || ($item eq 'selfcreateprocessing') || ($item eq 'shibenv')) { $curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; @@ -9365,7 +9145,6 @@ sub modify_selfcreation { # $save_usercreate{'cancreate'}{'captcha'} = $savecaptcha{'captcha'}; $save_usercreate{'cancreate'}{'recaptchakeys'} = $savecaptcha{'recaptchakeys'}; - $save_usercreate{'cancreate'}{'recaptchaversion'} = $savecaptcha{'recaptchaversion'}; $save_usercreate{'cancreate'}{'selfcreate'} = $cancreate{'selfcreate'}; if (ref($cancreate{'notify'}) eq 'HASH') { $save_usercreate{'cancreate'}{'notify'} = $cancreate{'notify'}; @@ -9527,10 +9306,6 @@ sub modify_selfcreation { $chgtext .= '
  • '.&mt('Private key set to [_1]',$pubkey).'
  • '; } $chgtext .= ''; - } elsif ($type eq 'recaptchaversion') { - if ($savecaptcha{'captcha'} eq 'recaptcha') { - $chgtext .= &mt('ReCAPTCHA set to version [_1]',$savecaptcha{$type}); - } } elsif ($type eq 'emailusername') { if (ref($cancreate{'emailusername'}) eq 'HASH') { if (ref($types) eq 'ARRAY') { @@ -9651,7 +9426,7 @@ sub process_captcha { $changes->{'captcha'} = 1; } } - my ($newpub,$newpriv,$currpub,$currpriv,$newversion,$currversion); + my ($newpub,$newpriv,$currpub,$currpriv); if ($newsettings->{'captcha'} eq 'recaptcha') { $newpub = $env{'form.'.$container.'_recaptchapub'}; $newpriv = $env{'form.'.$container.'_recaptchapriv'}; @@ -9661,12 +9436,6 @@ sub process_captcha { public => $newpub, private => $newpriv, }; - $newversion = $env{'form.'.$container.'_recaptchaversion'}; - $newversion =~ s/\D//g; - if ($newversion ne '2') { - $newversion = 1; - } - $newsettings->{'recaptchaversion'} = $newversion; } if (ref($current->{'recaptchakeys'}) eq 'HASH') { $currpub = $current->{'recaptchakeys'}{'public'}; @@ -9678,23 +9447,6 @@ sub process_captcha { } } } - if ($current->{'captcha'} eq 'recaptcha') { - $currversion = $current->{'recaptchaversion'}; - if ($currversion ne '2') { - $currversion = 1; - } - } - if ($currversion ne $newversion) { - if ($container eq 'cancreate') { - if (ref($changes->{'cancreate'}) eq 'ARRAY') { - push(@{$changes->{'cancreate'}},'recaptchaversion'); - } elsif (!defined($changes->{'cancreate'})) { - $changes->{'cancreate'} = ['recaptchaversion']; - } - } else { - $changes->{'recaptchaversion'} = 1; - } - } if (($newpub ne $currpub) || ($newpriv ne $currpriv)) { if ($container eq 'cancreate') { if (ref($changes->{'cancreate'}) eq 'ARRAY') { @@ -10532,76 +10284,30 @@ sub modify_helpsettings { my %defaultchecked = ('submitbugs' => 'on'); my @offon = ('off','on'); my @toggles = ('submitbugs'); - my %current = ('submitbugs' => ''); if (ref($domconfig{'helpsettings'}) eq 'HASH') { - %current = %{$domconfig{'helpsettings'}}; - } - foreach my $item (@toggles) { - if ($defaultchecked{$item} eq 'on') { - if ($current{$item} eq '') { - if ($env{'form.'.$item} eq '0') { - $changes{$item} = 1; - } - } elsif ($current{$item} ne $env{'form.'.$item}) { - $changes{$item} = 1; - } - } elsif ($defaultchecked{$item} eq 'off') { - if ($current{$item} eq '') { - if ($env{'form.'.$item} eq '1') { + foreach my $item (@toggles) { + if ($defaultchecked{$item} eq 'on') { + if ($domconfig{'helpsettings'}{$item} eq '') { + if ($env{'form.'.$item} eq '0') { + $changes{$item} = 1; + } + } elsif ($domconfig{'helpsettings'}{$item} ne $env{'form.'.$item}) { $changes{$item} = 1; } - } elsif ($current{$item} ne $env{'form.'.$item}) { - $changes{$item} = 1; - } - } - if (($env{'form.'.$item} eq '0') || ($env{'form.'.$item} eq '1')) { - $helphash{'helpsettings'}{$item} = $env{'form.'.$item}; - } - } - - my @modify = &Apache::loncommon::get_env_multiple('form.modifycusthelp'); - my $confname = $dom.'-domainconfig'; - my %existing=&Apache::lonnet::dump('roles',$dom,$confname,'rolesdef_'); - if (@modify) { - foreach my $num (@modify) { - my $rolename = $env{'form.custhelprole'.$num}; - if ($rolename ne '') { - if (exists($existing{'rolesdef_'.$rolename})) { - my $prefix = 'custhelp'.$num; - my %newprivs = &Apache::lonuserutils::custom_role_update($rolename,$prefix); - my %currprivs; - ($currprivs{'s'},$currprivs{'d'},$currprivs{'c'}) = - split(/\_/,$existing{'rolesdef_'.$rolename}); - foreach my $level ('c','d','s') { - if ($newprivs{$level} ne $currprivs{$level}) { - $changes{'customrole'}{$rolename} = 1; - my $result = &Apache::lonnet::definerole($rolename,$newprivs{'s'},$newprivs{'d'}, - $newprivs{'c'},$confname,$dom); - last; - } + } elsif ($defaultchecked{$item} eq 'off') { + if ($domconfig{'helpsettings'}{$item} eq '') { + if ($env{'form.'.$item} eq '1') { + $changes{$item} = 1; } + } elsif ($domconfig{'helpsettings'}{$item} ne $env{'form.'.$item}) { + $changes{$item} = 1; } } - } - } - if ($env{'form.newcusthelp'} ne '') { - my $prefix = 'custhelp'.$env{'form.newcusthelp'}; - my $rolename = $env{'form.newcusthelpname'}; - $rolename=~s/[^A-Za-z0-9]//gs; - if ($rolename ne '') { - unless(exists($existing{'rolesdef_'.$rolename})) { - my $errmsg; - my $result = &Apache::lonuserutils::store_custom_role($rolename,$prefix, - $confname,$dom); - if ($result eq 'ok') { - $changes{'newcustomrole'} = $rolename; - } else { - $errmsg = ': '.$result; - } + if (($env{'form.'.$item} eq '0') || ($env{'form.'.$item} eq '1')) { + $helphash{'helpsettings'}{$item} = $env{'form.'.$item}; } } } - my $putresult; if (keys(%changes) > 0) { $putresult = &Apache::lonnet::put_dom('configuration',\%helphash,$dom); @@ -10612,16 +10318,6 @@ sub modify_helpsettings { $resulttext .= '
  • '.&mt('Display link to: [_1] set to "'.$offon[$env{'form.'.$item}].'".', &Apache::loncommon::modal_link('http://bugs.loncapa.org', &mt('LON-CAPA bug tracker'),600,500)).'
  • '; - } elsif ($item eq 'customrole') { - if (ref($changes{'customrole'}) eq 'HASH') { - foreach my $role (sort(keys(%{$changes{'customrole'}}))) { - $resulttext .= '
  • '.&mt('Existing custom role modified: [_1]', - $role).'
  • '; - } - } - } elsif ($item eq 'newcustomrole') { - $resulttext .= '
  • '.&mt('New custom role added: [_1]', - $changes{'newcustomrole'}).'
  • '; } } $resulttext .= ''; @@ -10643,19 +10339,18 @@ sub modify_coursedefaults { my ($dom,$lastactref,%domconfig) = @_; my ($resulttext,$errors,%changes,%defaultshash); my %defaultchecked = ( + 'canuse_pdfforms' => 'off', 'uselcmath' => 'on', 'usejsme' => 'on' ); - my @toggles = ('uselcmath','usejsme'); + my @toggles = ('canuse_pdfforms','uselcmath','usejsme'); my @numbers = ('anonsurvey_threshold','uploadquota_official','uploadquota_unofficial', - 'uploadquota_community','uploadquota_textbook','mysqltables_official', - 'mysqltables_unofficial','mysqltables_community','mysqltables_textbook'); + 'uploadquota_community','uploadquota_textbook'); my @types = ('official','unofficial','community','textbook'); my %staticdefaults = ( anonsurvey_threshold => 10, uploadquota => 500, postsubmit => 60, - mysqltables => 172800, ); $defaultshash{'coursedefaults'} = {}; @@ -10696,12 +10391,12 @@ sub modify_coursedefaults { } $defaultshash{'coursedefaults'}{$item} = $newdef; } else { - my ($setting,$type) = ($item =~ /^(uploadquota|mysqltables)_(\w+)$/); - if (ref($domconfig{'coursedefaults'}{$setting}) eq 'HASH') { - $currdef = $domconfig{'coursedefaults'}{$setting}{$type}; + my ($type) = ($item =~ /^\Quploadquota_\E(\w+)$/); + if (ref($domconfig{'coursedefaults'}{'uploadquota'}) eq 'HASH') { + $currdef = $domconfig{'coursedefaults'}{'uploadquota'}{$type}; } $newdef =~ s/[^\w.\-]//g; - $defaultshash{'coursedefaults'}{$setting}{$type} = $newdef; + $defaultshash{'coursedefaults'}{'uploadquota'}{$type} = $newdef; } if ($currdef ne $newdef) { my $staticdef; @@ -10709,10 +10404,9 @@ sub modify_coursedefaults { unless (($currdef eq '') && ($newdef == $staticdefaults{$item})) { $changes{$item} = 1; } - } elsif ($item =~ /^(uploadquota|mysqltables)_/) { - my $setting = $1; - unless (($currdef eq '') && ($newdef == $staticdefaults{$setting})) { - $changes{$setting} = 1; + } else { + unless (($currdef eq '') && ($newdef == $staticdefaults{'uploadquota'})) { + $changes{'uploadquota'} = 1; } } } @@ -10725,7 +10419,7 @@ sub modify_coursedefaults { } } my $newclone; - if ($env{'form.canclone'} =~ /^(none|domain|instcode)$/) { + if ($env{'form.canclone'} =~ /^(none|domain|instcode)$/) { $newclone = $env{'form.canclone'}; } if ($newclone eq 'instcode') { @@ -10748,8 +10442,8 @@ sub modify_coursedefaults { $newclone eq ''; } } elsif ($newclone ne '') { - $defaultshash{'coursedefaults'}{'canclone'} = $newclone; - } + $defaultshash{'coursedefaults'}{'canclone'} = $newclone; + } if ($newclone ne $currclone) { $changes{'canclone'} = 1; } @@ -10767,10 +10461,10 @@ sub modify_coursedefaults { $defaultshash{'coursedefaults'}{'coursecredits'}{$type} = $credits{$type}; } } else { - if ($env{'form.coursecredits'} eq '1') { + if ($env{'form.coursecredits'} eq '1') { foreach my $type (@types) { unless ($type eq 'community') { - if ($domconfig{'coursedefaults'}{'coursecredits'}{$type} ne $credits{$type}) { + if ($domconfig{'coursedefaults'}{'coursecredits'}{$type} ne $credits{$type}) { $changes{'coursecredits'} = 1; } $defaultshash{'coursedefaults'}{'coursecredits'}{$type} = $credits{$type}; @@ -10813,7 +10507,7 @@ sub modify_coursedefaults { } if (exists($currtimeout{$type})) { if ($timeout ne $currtimeout{$type}) { - $changes{'postsubmit'} = 1; + $changes{'postsubmit'} = 1; } } elsif ($timeout ne '') { $changes{'postsubmit'} = 1; @@ -10835,14 +10529,14 @@ sub modify_coursedefaults { if ($putresult eq 'ok') { if (keys(%changes) > 0) { 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{'canclone'}) || ($changes{'mysqltables'})) { - foreach my $item ('uselcmath','usejsme') { + ($changes{'canclone'})) { + foreach my $item ('canuse_pdfforms','uselcmath','usejsme') { if ($changes{$item}) { $domdefaults{$item}=$defaultshash{'coursedefaults'}{$item}; } - } + } if ($changes{'coursecredits'}) { if (ref($defaultshash{'coursedefaults'}{'coursecredits'}) eq 'HASH') { foreach my $type (keys(%{$defaultshash{'coursedefaults'}{'coursecredits'}})) { @@ -10889,7 +10583,13 @@ sub modify_coursedefaults { } $resulttext = &mt('Changes made:').'