--- loncom/interface/domainprefs.pm 2017/10/17 14:08:48 1.160.6.84.2.6
+++ loncom/interface/domainprefs.pm 2014/05/05 23:28:53 1.241
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.160.6.84.2.6 2017/10/17 14:08:48 raeburn Exp $
+# $Id: domainprefs.pm,v 1.241 2014/05/05 23:28:53 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -19,15 +19,14 @@
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#
#
###############################################################
-###############################################################
+##############################################################
=pod
@@ -216,27 +215,13 @@ sub handler {
'contacts','defaults','scantron','coursecategories',
'serverstatuses','requestcourses','helpsettings',
'coursedefaults','usersessions','loadbalancing',
- 'requestauthor','selfenrollment','inststatus',
- 'ltitools'],$dom);
- if (ref($domconfig{'ltitools'}) eq 'HASH') {
- my %encconfig =
- &Apache::lonnet::get_dom('encconfig',['ltitools'],$dom);
- if (ref($encconfig{'ltitools'}) eq 'HASH') {
- foreach my $id (keys(%{$domconfig{'ltitools'}})) {
- if (ref($domconfig{'ltitools'}{$id}) eq 'HASH') {
- foreach my $item ('key','secret') {
- $domconfig{'ltitools'}{$id}{$item} = $encconfig{'ltitools'}{$id}{$item};
- }
- }
- }
- }
- }
+ 'requestauthor','selfenrollment','inststatus'],$dom);
my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll',
'autoupdate','autocreate','directorysrch','contacts',
'usercreation','selfcreation','usermodification','scantron',
'requestcourses','requestauthor','coursecategories',
- 'serverstatuses','helpsettings','coursedefaults',
- 'ltitools','selfenrollment','usersessions');
+ 'serverstatuses','helpsettings',
+ 'coursedefaults','selfenrollment','usersessions');
my %existing;
if (ref($domconfig{'loadbalancing'}) eq 'HASH') {
%existing = %{$domconfig{'loadbalancing'}};
@@ -265,8 +250,6 @@ sub handler {
header => [{col1 => 'Log-in Page Items',
col2 => '',},
{col1 => 'Log-in Help',
- col2 => 'Value'},
- {col1 => 'Custom HTML in document head',
col2 => 'Value'}],
print => \&print_login,
modify => \&modify_login,
@@ -276,8 +259,6 @@ sub handler {
help => 'Domain_Configuration_LangTZAuth',
header => [{col1 => 'Setting',
col2 => 'Value'},
- {col1 => 'Internal Authentication',
- col2 => 'Value'},
{col1 => 'Institutional user types',
col2 => 'Assignable to e-mail usernames'}],
print => \&print_defaults,
@@ -321,24 +302,18 @@ 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,
},
'contacts' =>
- { text => 'E-mail addresses and helpform',
+ { text => 'Contact Information',
help => 'Domain_Configuration_Contact_Info',
- header => [{col1 => 'Default e-mail addresses',
- col2 => 'Value',},
- {col1 => 'Recipient(s) for notifications',
- col2 => 'Value',},
- {col1 => 'Ask helpdesk form settings',
- col2 => 'Value',},],
+ header => [{col1 => 'Setting',
+ col2 => 'Value',}],
print => \&print_contacts,
modify => \&modify_contacts,
},
@@ -394,8 +369,6 @@ sub handler {
col2 => 'Value'},
{col1 => 'Available textbooks',
col2 => ''},
- {col1 => 'Available templates',
- col2 => ''},
{col1 => 'Validation (not official courses)',
col2 => 'Value'},],
print => \&print_quotas,
@@ -435,12 +408,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,
},
@@ -466,6 +437,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',
@@ -478,7 +457,7 @@ sub handler {
print => \&print_usersessions,
modify => \&modify_usersessions,
},
- 'loadbalancing' =>
+ 'loadbalancing' =>
{text => 'Dedicated Load Balancer(s)',
help => 'Domain_Configuration_Load_Balancing',
header => [{col1 => 'Balancers',
@@ -489,14 +468,6 @@ sub handler {
print => \&print_loadbalancing,
modify => \&modify_loadbalancing,
},
- 'ltitools' =>
- {text => 'External Tools (LTI)',
- help => 'Domain_Configuration_LTI_Tools',
- header => [{col1 => 'Setting',
- col2 => 'Value',}],
- print => \&print_ltitools,
- modify => \&modify_ltitools,
- },
);
if (keys(%servers) > 1) {
$prefs{'login'} = { text => 'Log-in page options',
@@ -506,8 +477,6 @@ sub handler {
{col1 => 'Log-in Page Items',
col2 => ''},
{col1 => 'Log-in Help',
- col2 => 'Value'},
- {col1 => 'Custom HTML in document head',
col2 => 'Value'}],
print => \&print_login,
modify => \&modify_login,
@@ -550,9 +519,6 @@ $javascript_validations
$coursebrowserjs
END
}
- if (grep(/^contacts$/,@actions)) {
- $js .= &contacts_javascript();
- }
&Apache::lonconfigsettings::display_settings($r,$dom,$phase,$context,\@prefs_order,\%prefs,\%domconfig,$confname,$js);
} else {
# check if domconfig user exists for the domain.
@@ -642,7 +608,7 @@ sub process_changes {
} elsif ($action eq 'autocreate') {
$output = &modify_autocreate($dom,%domconfig);
} elsif ($action eq 'directorysrch') {
- $output = &modify_directorysrch($dom,$lastactref,%domconfig);
+ $output = &modify_directorysrch($dom,%domconfig);
} elsif ($action eq 'usercreation') {
$output = &modify_usercreation($dom,%domconfig);
} elsif ($action eq 'selfcreation') {
@@ -664,7 +630,7 @@ sub process_changes {
} elsif ($action eq 'requestauthor') {
$output = &modify_quotas($r,$dom,$action,$lastactref,%domconfig);
} elsif ($action eq 'helpsettings') {
- $output = &modify_helpsettings($r,$dom,$confname,$lastactref,%domconfig);
+ $output = &modify_helpsettings($r,$dom,$confname,%domconfig);
} elsif ($action eq 'coursedefaults') {
$output = &modify_coursedefaults($dom,$lastactref,%domconfig);
} elsif ($action eq 'selfenrollment') {
@@ -673,8 +639,6 @@ sub process_changes {
$output = &modify_usersessions($dom,$lastactref,%domconfig);
} elsif ($action eq 'loadbalancing') {
$output = &modify_loadbalancing($dom,%domconfig);
- } elsif ($action eq 'ltitools') {
- $output = &modify_ltitools($r,$dom,$action,$lastactref,%domconfig);
}
return $output;
}
@@ -687,22 +651,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 .=
'
@@ -720,8 +668,7 @@ sub print_config_box {
my $colspan = '';
my $rightcolspan = '';
if (($action eq 'rolecolors') || ($action eq 'defaults') ||
- ($action eq 'directorysrch') ||
- (($action eq 'login') && ($numheaders < 4))) {
+ (($action eq 'login') && ($numheaders < 3))) {
$colspan = ' colspan="2"';
}
if ($action eq 'usersessions') {
@@ -738,13 +685,12 @@ 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 'contacts')) {
+ ($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);
} elsif ($action eq 'login') {
- if ($numheaders == 4) {
+ if ($numheaders == 3) {
$colspan = ' colspan="2"';
$output .= &print_login('service',$dom,$confname,$phase,$settings,\$rowtotal);
} else {
@@ -769,8 +715,7 @@ sub print_config_box {
$rowtotal ++;
if (($action eq 'autoupdate') || ($action eq 'usercreation') ||
($action eq 'selfcreation') || ($action eq 'selfenrollment') ||
- ($action eq 'usersessions') || ($action eq 'coursecategories') ||
- ($action eq 'contacts') || ($action eq 'defaults')) {
+ ($action eq 'usersessions') || ($action eq 'coursecategories')) {
if ($action eq 'coursecategories') {
$output .= &print_coursecategories('middle',$dom,$item,$settings,\$rowtotal);
$colspan = ' colspan="2"';
@@ -795,11 +740,10 @@ 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) {
+ if ($numheaders == 3) {
$output .= &print_login('page',$dom,$confname,$phase,$settings,\$rowtotal).'
@@ -815,31 +759,9 @@ sub print_config_box {
} else {
$output .= &print_login('help',$dom,$confname,$phase,$settings,\$rowtotal);
}
- $output .= '
-
-
-
-
-
-
- ';
- if ($numheaders == 4) {
- $output .= '
- '.&mt($item->{'header'}->[3]->{'col1'}).'
- '.&mt($item->{'header'}->[3]->{'col2'}).'
- ';
- } else {
- $output .= '
- '.&mt($item->{'header'}->[2]->{'col1'}).'
- '.&mt($item->{'header'}->[2]->{'col2'}).'
- ';
- }
- $rowtotal ++;
- $output .= &print_login('headtag',$dom,$confname,$phase,$settings,\$rowtotal);
} elsif ($action eq 'requestcourses') {
- $output .= &print_requestmail($dom,$action,$settings,\$rowtotal);
- $rowtotal ++;
- $output .= &print_studentcode($settings,\$rowtotal).'
+ $output .= &print_requestmail($dom,$action,$settings,\$rowtotal).
+ &print_studentcode($settings,\$rowtotal).'
@@ -849,18 +771,7 @@ sub print_config_box {
'.&mt($item->{'header'}->[2]->{'col1'}).'
'.&mt($item->{'header'}->[2]->{'col2'}).' '.
- &textbookcourses_javascript($settings).
- &print_textbookcourses($dom,'textbooks',$settings,\$rowtotal).'
-
-
-
-
-
-
-
- '.&mt($item->{'header'}->[3]->{'col1'}).'
- '.&mt($item->{'header'}->[3]->{'col2'}).' '.
- &print_textbookcourses($dom,'templates',$settings,\$rowtotal).'
+ &print_textbookcourses($dom,$settings,\$rowtotal).'
@@ -868,13 +779,12 @@ sub print_config_box {
- '.&mt($item->{'header'}->[4]->{'col1'}).'
- '.&mt($item->{'header'}->[4]->{'col2'}).'
+ '.&mt($item->{'header'}->[3]->{'col1'}).'
+ '.&mt($item->{'header'}->[3]->{'col2'}).'
'.
&print_validation_rows('requestcourses',$dom,$settings,\$rowtotal);
} elsif ($action eq 'requestauthor') {
$output .= &print_requestmail($dom,$action,$settings,\$rowtotal);
- $rowtotal ++;
} elsif ($action eq 'rolecolors') {
$output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).'
@@ -909,7 +819,7 @@ sub print_config_box {
';
- if ($action eq 'login') {
+ if (($action eq 'login') || ($action eq 'directorysrch')) {
$output .= '
'.&mt($item->{'header'}->[0]->{'col1'}).' ';
} elsif ($action eq 'serverstatuses') {
@@ -953,12 +863,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 'serverstatuses') || ($action eq 'loadbalancing') ||
- ($action eq 'ltitools')) {
+ } 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 .= '
@@ -1255,57 +1166,6 @@ sub print_login {
$itemcount ++;
}
$datatable .= &captcha_choice('login',$settings,$itemcount);
- } elsif ($caller eq 'headtag') {
- my %domservers = &Apache::lonnet::get_servers($dom);
- my $choice = $choices{'headtag'};
- $css_class = ' class="LC_odd_row"';
- $datatable .= ' '.$choice.' '.
- ' ';
}
return $datatable;
}
@@ -1339,9 +1199,6 @@ sub login_choices {
link => "Link",
alink => "Active link",
vlink => "Visited link",
- headtag => "Custom markup",
- action => "Action",
- current => "Current",
);
return %choices;
}
@@ -2204,6 +2061,7 @@ sub print_requestmail {
$datatable .= &mt('There are no active Domain Coordinators');
}
$datatable .='';
+ $$rowtotal += $rows;
return $datatable;
}
@@ -2212,11 +2070,9 @@ sub print_studentcode {
my $rownum = 0;
my ($output,%current);
my @crstypes = ('official','unofficial','community','textbook');
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'uniquecode'}) eq 'HASH') {
- foreach my $type (@crstypes) {
- $current{$type} = $settings->{'uniquecode'}{$type};
- }
+ if (ref($settings->{'uniquecode'}) eq 'HASH') {
+ foreach my $type (@crstypes) {
+ $current{$type} = $settings->{'uniquecode'}{$type};
}
}
$output .= ''.
@@ -2237,14 +2093,14 @@ sub print_studentcode {
}
sub print_textbookcourses {
- my ($dom,$type,$settings,$rowtotal) = @_;
+ my ($dom,$settings,$rowtotal) = @_;
my $rownum = 0;
my $css_class;
my $itemcount = 1;
my $maxnum = 0;
my $bookshash;
if (ref($settings) eq 'HASH') {
- $bookshash = $settings->{$type};
+ $bookshash = $settings->{'textbooks'};
}
my %ordered;
if (ref($bookshash) eq 'HASH') {
@@ -2257,8 +2113,8 @@ sub print_textbookcourses {
}
my $confname = $dom.'-domainconfig';
my $switchserver = &check_switchserver($dom,$confname);
- my $maxnum = scalar(keys(%ordered));
- my $datatable;
+ $maxnum = scalar(keys(%ordered));
+ my $datatable = &textbookcourses_javascript(\%ordered);
if (keys(%ordered)) {
my @items = sort { $a <=> $b } keys(%ordered);
for (my $i=0; $i<@items; $i++) {
@@ -2266,24 +2122,21 @@ sub print_textbookcourses {
my $key = $ordered{$items[$i]};
my %coursehash=&Apache::lonnet::coursedescription($key);
my $coursetitle = $coursehash{'description'};
- my ($subject,$title,$author,$publisher,$image,$imgsrc,$cdom,$cnum);
+ my ($subject,$title,$author,$image,$imgsrc,$cdom,$cnum);
if (ref($bookshash->{$key}) eq 'HASH') {
$subject = $bookshash->{$key}->{'subject'};
$title = $bookshash->{$key}->{'title'};
- if ($type eq 'textbooks') {
- $publisher = $bookshash->{$key}->{'publisher'};
- $author = $bookshash->{$key}->{'author'};
- $image = $bookshash->{$key}->{'image'};
- if ($image ne '') {
- my ($path,$imagefile) = ($image =~ m{^(.+)/([^/]+)$});
- my $imagethumb = "$path/tn-".$imagefile;
- $imgsrc = ' ';
- }
+ $author = $bookshash->{$key}->{'author'};
+ $image = $bookshash->{$key}->{'image'};
+ if ($image ne '') {
+ my ($path,$imagefile) = ($image =~ m{^(.+)/([^/]+)$});
+ my $imagethumb = "$path/tn-".$imagefile;
+ $imgsrc = ' ';
}
}
- my $chgstr = ' onchange="javascript:reorderBooks(this.form,'."'$type".'_'."$key','$type'".');"';
+ my $chgstr = ' onchange="javascript:reorderBooks(this.form,'."'$key'".');"';
$datatable .= ' '
- .'';
+ .'';
for (my $k=0; $k<=$maxnum; $k++) {
my $vpos = $k+1;
my $selstr;
@@ -2293,43 +2146,39 @@ sub print_textbookcourses {
$datatable .= ''.$vpos.' ';
}
$datatable .= ' '.(' 'x2).
- ' '.
+ ' '.
&mt('Delete?').' '.
''.
- ''.&mt('Subject:').' '.
+ ''.&mt('Subject:').' '.
(' 'x2).
- ''.&mt('Title:').' ';
- if ($type eq 'textbooks') {
- $datatable .= (' 'x2).
- ''.&mt('Publisher:').' '.
- (' 'x2).
- ''.&mt('Author(s):').' '.
- (' 'x2).
- ''.&mt('Thumbnail:');
- if ($image) {
- $datatable .= ''.
- $imgsrc.
- ' '.&mt('Delete?').' '.
- ' '.&mt('Replace:').' ';
- }
- if ($switchserver) {
- $datatable .= &mt('Upload to library server: [_1]',$switchserver);
- } else {
- $datatable .= ' ';
- }
+ ''.&mt('Title:').' '.
+ (' 'x2).
+ ''.&mt('Author(s):').' '.
+ (' 'x2).
+ ''.&mt('Thumbnail:');
+ if ($image) {
+ $datatable .= ''.
+ $imgsrc.
+ ' '.&mt('Delete?').' '.
+ ' '.&mt('Replace:').' ';
+ }
+ if ($switchserver) {
+ $datatable .= &mt('Upload to library server: [_1]',$switchserver);
+ } else {
+ $datatable .= ' ';
}
- $datatable .= ' '.
+ $datatable .= ' '.
''.&mt('LON-CAPA course:').' '.
$coursetitle.' '."\n";
$itemcount ++;
}
}
$css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $chgstr = ' onchange="javascript:reorderBooks(this.form,'."'$type"."_addbook_pos','$type'".');"';
+ my $chgstr = ' onchange="javascript:reorderBooks(this.form,'."'addbook_pos'".');"';
$datatable .= ''."\n".
- ' '."\n".
- '';
+ ' '."\n".
+ '';
for (my $k=0; $k<$maxnum+1; $k++) {
my $vpos = $k+1;
my $selstr;
@@ -2339,30 +2188,26 @@ sub print_textbookcourses {
$datatable .= ''.$vpos.' ';
}
$datatable .= ' '."\n".
- ' '.&mt('Add').' '."\n".
+ ' '.&mt('Add').''."\n".
''.
- ''.&mt('Subject:').' '."\n".
+ ''.&mt('Subject:').' '."\n".
(' 'x2).
- ''.&mt('Title:').' '."\n".
- (' 'x2);
- if ($type eq 'textbooks') {
- $datatable .= ''.&mt('Publisher:').' '."\n".
- (' 'x2).
- ''.&mt('Author(s):').' '."\n".
- (' 'x2).
- ''.&mt('Image:').' ';
- if ($switchserver) {
- $datatable .= &mt('Upload to library server: [_1]',$switchserver);
- } else {
- $datatable .= ' ';
- }
+ ''.&mt('Title:').' '."\n".
+ (' 'x2).
+ ''.&mt('Author(s):').' '."\n".
+ (' 'x2).
+ ''.&mt('Image:').' ';
+ if ($switchserver) {
+ $datatable .= &mt('Upload to library server: [_1]',$switchserver);
+ } else {
+ $datatable .= ' ';
}
$datatable .= ' '."\n".
''.&mt('LON-CAPA course:').' '.
- &Apache::loncommon::select_dom_form($env{'request.role.domain'},$type.'_addbook_cdom').
- ' '.
+ &Apache::loncommon::select_dom_form($env{'request.role.domain'},'addbook_cdom').
+ ' '.
&Apache::loncommon::selectcourse_link
- ('display',$type.'_addbook_cnum',$type.'_addbook_cdom',undef,undef,undef,'Course');
+ ('display','addbook_cnum','addbook_cdom',undef,undef,undef,'Course');
' '."\n".
' '."\n";
$itemcount ++;
@@ -2370,124 +2215,23 @@ sub print_textbookcourses {
}
sub textbookcourses_javascript {
- my ($settings) = @_;
- return unless(ref($settings) eq 'HASH');
- my (%ordered,%total,%jstext);
- foreach my $type ('textbooks','templates') {
- $total{$type} = 0;
- if (ref($settings->{$type}) eq 'HASH') {
- foreach my $item (keys(%{$settings->{$type}})) {
- if (ref($settings->{$type}->{$item}) eq 'HASH') {
- my $num = $settings->{$type}->{$item}{'order'};
- $ordered{$type}{$num} = $item;
- }
- }
- $total{$type} = scalar(keys(%{$settings->{$type}}));
- }
- my @jsarray = ();
- foreach my $item (sort {$a <=> $b } (keys(%{$ordered{$type}}))) {
- push(@jsarray,$ordered{$type}{$item});
- }
- $jstext{$type} = ' var '.$type.' = Array('."'".join("','",@jsarray)."'".');'."\n";
- }
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
-}
-
-sub ltitools_javascript {
- my ($settings) = @_;
- return unless(ref($settings) eq 'HASH');
- my (%ordered,$total,%jstext);
- $total = 0;
- foreach my $item (keys(%{$settings})) {
- if (ref($settings->{$item}) eq 'HASH') {
- my $num = $settings->{$item}{'order'};
- $ordered{$num} = $item;
- }
- }
- $total = scalar(keys(%{$settings}));
- my @jsarray = ();
- foreach my $item (sort {$a <=> $b } (keys(%ordered))) {
- push(@jsarray,$ordered{$item});
+ my ($textbooks) = @_;
+ return unless(ref($textbooks) eq 'HASH');
+ my $num = scalar(keys(%{$textbooks}));
+ my @jsarray;
+ foreach my $item (sort {$a <=> $b } (keys(%{$textbooks}))) {
+ push(@jsarray,$textbooks->{$item});
}
- my $jstext = ' var ltitools = Array('."'".join("','",@jsarray)."'".');'."\n";
+ my $jstext = ' var textbooks = Array('."'".join("','",@jsarray)."'".');'."\n";
return <<"ENDSCRIPT";
-
-ENDSCRIPT
-}
-
sub print_helpsettings {
- my ($position,$dom,$settings,$rowtotal) = @_;
- my $confname = $dom.'-domainconfig';
- my $formname = 'display';
+ 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,%ordered,%current);
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'adhoc'}) eq 'HASH') {
- %current = %{$settings->{'adhoc'}};
- }
- }
- my $count = 0;
- foreach my $key (sort(keys(%existing))) {
- if ($key=~/^rolesdef\_(\w+)$/) {
- my $rolename = $1;
- my (%privs,$order);
- ($privs{'system'},$privs{'domain'},$privs{'course'}) = split(/\_/,$existing{$key});
- $customroles{$rolename} = \%privs;
- if (ref($current{$rolename}) eq 'HASH') {
- $order = $current{$rolename}{'order'};
- }
- if ($order eq '') {
- $order = $count;
- }
- $ordered{$order} = $rolename;
- $count++;
- }
- }
- my $maxnum = scalar(keys(%ordered));
- my @roles_by_num = ();
- foreach my $item (sort {$a <=> $b } (keys(%ordered))) {
- push(@roles_by_num,$item);
- }
- my $context = 'domprefs';
- my $crstype = 'Course';
- my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
- my @accesstypes = ('all','dh','da','none');
- my ($numstatustypes,@jsarray);
- if (ref($types) eq 'ARRAY') {
- if (@{$types} > 0) {
- $numstatustypes = scalar(@{$types});
- push(@accesstypes,'status');
- @jsarray = ('bystatus');
- }
- }
- my %domhelpdesk = &Apache::lonnet::get_active_domroles($dom,['dh','da']);
- if (keys(%domhelpdesk)) {
- push(@accesstypes,('inc','exc'));
- push(@jsarray,('notinc','notexc'));
- }
- my $hiddenstr = join("','",@jsarray);
- $datatable .= &helpsettings_javascript(\@roles_by_num,$maxnum,$hiddenstr,$formname);
- my $context = 'domprefs';
- my $crstype = 'Course';
- my $prefix = 'helproles_';
- my $add_class = 'LC_hidden';
- foreach my $num (@roles_by_num) {
- my $role = $ordered{$num};
- my ($desc,$access,@statuses);
- if (ref($current{$role}) eq 'HASH') {
- $desc = $current{$role}{'desc'};
- $access = $current{$role}{'access'};
- if (ref($current{$role}{'insttypes'}) eq 'ARRAY') {
- @statuses = @{$current{$role}{'insttypes'}};
- }
- }
- if ($desc eq '') {
- $desc = $role;
- }
- my $identifier = 'custhelp'.$num;
- 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"':'';
- my $chgstr = ' onchange="javascript:reorderHelpRoles(this.form,'."'helproles_".$num."_pos'".');"';
- $datatable .= ''.$role.' '.
- '';
- for (my $k=0; $k<=$maxnum; $k++) {
- my $vpos = $k+1;
- my $selstr;
- if ($k == $num) {
- $selstr = ' selected="selected" ';
- }
- $datatable .= ''.$vpos.' ';
- }
- $datatable .= ' '.(' 'x2).
- ' '.
- ' '.
- ''.&mt('Role name').' '.
- &mt('Name shown to users:').
- ' '.
- ' '.
- &helpdeskroles_access($dom,$prefix,$num,$add_class,$current{$role},\@accesstypes,
- $othertitle,$usertypes,$types,\%domhelpdesk).
- ''.
- ''.&mt('Role privileges').&adhocbutton($prefix,$num,'privs','show').' '.
- &Apache::lonuserutils::custom_role_table($crstype,\%full,\%levels,
- \%levelscurrent,$identifier,
- 'LC_hidden',$prefix.$num.'_privs').
- ' ';
- $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);
- my $chgstr = ' onchange="javascript:reorderHelpRoles(this.form,'."'helproles_".$count."_pos'".');"';
- $datatable .= ''.
- ' '."\n".
- '';
- for (my $k=0; $k<$maxnum+1; $k++) {
- my $vpos = $k+1;
- my $selstr;
- if ($k == $maxnum) {
- $selstr = ' selected="selected" ';
- }
- $datatable .= ''.$vpos.' ';
- }
- $datatable .= ' '."\n".
- ' '. &mt('Add').
- ' '.
- ''.&mt('Role name').' '.
- ''.
- &mt('Internal name:').
- ' '.
- ' '.(' 'x4).
- ''.
- &mt('Name shown to users:').
- ' '.
- ' '.
- &helpdeskroles_access($dom,$prefix,$count,'',undef,\@accesstypes,$othertitle,
- $usertypes,$types,\%domhelpdesk).
- ''.&mt('Role privileges').' '.
- &Apache::lonuserutils::custom_role_header($context,$crstype,
- \@templateroles,$newcust).
- &Apache::lonuserutils::custom_role_table('Course',\%full,\%levels,
- \%levelscurrent,$newcust).
- ' ';
- $count ++;
- $$rowtotal += $count;
- }
- return $datatable;
-}
-
-sub adhocbutton {
- my ($prefix,$num,$field,$visibility) = @_;
- my %lt = &Apache::lonlocal::texthash(
- show => 'Show details',
- hide => 'Hide details',
- );
- return ''.(' 'x10).
- ' '.(' 'x2).' '.(' 'x2);
-}
-
-sub helpsettings_javascript {
- my ($roles_by_num,$total,$hiddenstr,$formname) = @_;
- return unless(ref($roles_by_num) eq 'ARRAY');
- my %html_js_lt = &Apache::lonlocal::texthash(
- show => 'Show details',
- hide => 'Hide details',
- );
- &html_escape(\%html_js_lt);
- my $jstext = ' var helproles = Array('."'".join("','",@{$roles_by_num})."'".');'."\n";
- return <<"ENDSCRIPT";
-
-
-ENDSCRIPT
-}
-
-sub helpdeskroles_access {
- my ($dom,$prefix,$num,$add_class,$current,$accesstypes,$othertitle,
- $usertypes,$types,$domhelpdesk) = @_;
- return unless ((ref($accesstypes) eq 'ARRAY') && (ref($domhelpdesk) eq 'HASH'));
- my %lt = &Apache::lonlocal::texthash(
- 'rou' => 'Role usage',
- 'whi' => 'Which helpdesk personnel may use this role?',
- 'all' => 'All with domain helpdesk or helpdesk assistant role',
- 'dh' => 'All with domain helpdesk role',
- 'da' => 'All with domain helpdesk assistant role',
- 'none' => 'None',
- 'status' => 'Determined based on institutional status',
- 'inc' => 'Include all, but exclude specific personnel',
- 'exc' => 'Exclude all, but include specific personnel',
- );
- my %usecheck = (
- all => ' checked="checked"',
- );
- my %displaydiv = (
- status => 'none',
- inc => 'none',
- exc => 'none',
- priv => 'block',
- );
- my $output;
- if (ref($current) eq 'HASH') {
- if (($current->{'access'} ne '') && ($current->{'access'} ne 'all')) {
- if (grep(/^\Q$current->{access}\E$/,@{$accesstypes})) {
- $usecheck{$current->{access}} = $usecheck{'all'};
- delete($usecheck{'all'});
- if ($current->{access} =~ /^(status|inc|exc)$/) {
- my $access = $1;
- $displaydiv{$access} = 'inline';
- } elsif ($current->{access} eq 'none') {
- $displaydiv{'priv'} = 'none';
- }
- }
- }
- }
- $output = ''.$lt{'rou'}.' '.
- ''.$lt{'whi'}.'
';
- foreach my $access (@{$accesstypes}) {
- $output .= ' '.
- $lt{$access}.' ';
- if ($access eq 'status') {
- $output .= '
'.
- &Apache::lonuserutils::adhoc_status_types($dom,$prefix,$num,$current->{$access},
- $othertitle,$usertypes,$types).
- '
';
- } elsif (($access eq 'inc') && (keys(%{$domhelpdesk}) > 0)) {
- $output .= ''.
- &Apache::lonuserutils::adhoc_staff($access,$prefix,$num,$current->{$access},$domhelpdesk).
- '
';
- } elsif (($access eq 'exc') && (keys(%{$domhelpdesk}) > 0)) {
- $output .= ''.
- &Apache::lonuserutils::adhoc_staff($access,$prefix,$num,$current->{$access},$domhelpdesk).
- '
';
- }
- $output .= '';
- }
- $output .= ' ';
- return $output;
+ ($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,
+ \%choices,$itemcount);
+ return $datatable;
}
sub radiobutton_prefs {
my ($settings,$toggles,$defaultchecked,$choices,$itemcount,$onclick,
- $additional,$align) = @_;
+ $additional) = @_;
return unless ((ref($toggles) eq 'ARRAY') && (ref($defaultchecked) eq 'HASH') &&
(ref($choices) eq 'HASH'));
@@ -3715,14 +2737,8 @@ sub radiobutton_prefs {
$datatable .=
''.
''.$choices->{$item}.
- ' ';
- if ($align eq 'left') {
- $datatable .= '';
- } else {
- $datatable .= ' ';
- }
- $datatable .=
- ''.
+ ' '.
+ ''.
' '.&mt('Yes').
' {$item}) eq 'HASH') {
- my $num = $settings->{$item}{'order'};
- $ordered{$num} = $item;
- }
- }
- }
- my $confname = $dom.'-domainconfig';
- my $switchserver = &check_switchserver($dom,$confname);
- my $maxnum = scalar(keys(%ordered));
- my $datatable = <itools_javascript($settings);
- my %lt = <itools_names();
- my @courseroles = ('cc','in','ta','ep','st');
- my @ltiroles = qw(Instructor ContentDeveloper TeachingAssistant Learner);
- my @fields = ('fullname','firstname','lastname','email','user','roles');
- if (keys(%ordered)) {
- my @items = sort { $a <=> $b } keys(%ordered);
- for (my $i=0; $i<@items; $i++) {
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $item = $ordered{$items[$i]};
- my ($title,$key,$secret,$url,$imgsrc,$version);
- if (ref($settings->{$item}) eq 'HASH') {
- $title = $settings->{$item}->{'title'};
- $url = $settings->{$item}->{'url'};
- $key = $settings->{$item}->{'key'};
- $secret = $settings->{$item}->{'secret'};
- my $image = $settings->{$item}->{'image'};
- if ($image ne '') {
- $imgsrc = ' ';
- }
- }
- my $chgstr = ' onchange="javascript:reorderLTI(this.form,'."'ltitools_".$item."'".');"';
- $datatable .= ''
- .'';
- for (my $k=0; $k<=$maxnum; $k++) {
- my $vpos = $k+1;
- my $selstr;
- if ($k == $i) {
- $selstr = ' selected="selected" ';
- }
- $datatable .= ''.$vpos.' ';
- }
- $datatable .= ' '.(' 'x2).
- ' '.
- &mt('Delete?').' '.
- ''.
- ''.&mt('Required settings').' '.
- ''.$lt{'title'}.': '.
- (' 'x2).
- ''.$lt{'version'}.':'.
- '1.1 '.
- (' 'x2).
- ''.$lt{'msgtype'}.':'.
- 'Launch '.
- ' '.
- ''.$lt{'url'}.': '.
- (' 'x2).
- ''.$lt{'key'}.
- ' '.
- (' 'x2).
- ''.$lt{'secret'}.':'.
- ' '.
- ' '.&mt('Visible input').' '.
- ' '.
- ' '.
- ''.&mt('Optional settings').' '.
- ''.&mt('Display target:');
- my %currdisp;
- if (ref($settings->{$item}->{'display'}) eq 'HASH') {
- if ($settings->{$item}->{'display'}->{'target'} eq 'window') {
- $currdisp{'window'} = ' checked="checked"';
- } elsif ($settings->{$item}->{'display'}->{'target'} eq 'tab') {
- $currdisp{'tab'} = ' checked="checked"';
- } else {
- $currdisp{'iframe'} = ' checked="checked"';
- }
- if ($settings->{$item}->{'display'}->{'width'} =~ /^(\d+)$/) {
- $currdisp{'width'} = $1;
- }
- if ($settings->{$item}->{'display'}->{'height'} =~ /^(\d+)$/) {
- $currdisp{'height'} = $1;
- }
- $currdisp{'linktext'} = $settings->{$item}->{'display'}->{'linktext'};
- $currdisp{'explanation'} = $settings->{$item}->{'display'}->{'explanation'};
- } else {
- $currdisp{'iframe'} = ' checked="checked"';
- }
- foreach my $disp ('iframe','tab','window') {
- $datatable .= ' '.
- $lt{$disp}.' '.(' 'x2);
- }
- $datatable .= (' 'x4);
- foreach my $dimen ('width','height') {
- $datatable .= ''.$lt{$dimen}.' '.
- ' '.
- (' 'x2);
- }
- $datatable .= ' '.
- ''.$lt{'linktext'}.' '.
- '
'.
- ''.$lt{'explanation'}.' '.
- '
';
- $datatable .= ' ';
- foreach my $extra ('passback','roster') {
- my $checkedon = '';
- my $checkedoff = ' checked="checked"';
- if ($settings->{$item}->{$extra}) {
- $checkedon = $checkedoff;
- $checkedoff = '';
- }
- $datatable .= $lt{$extra}.' '.
- ' '.
- &mt('Yes').' '.(' 'x2).
- ' '.
- &mt('No').' '.(' 'x4);
- }
- $datatable .= ''.$lt{'icon'}.': ';
- if ($imgsrc) {
- $datatable .= $imgsrc.
- ' '.&mt('Delete?').' '.
- ' '.&mt('Replace:').' ';
- } else {
- $datatable .= '('.&mt('if larger than 21x21 pixels, image will be scaled').') ';
- }
- if ($switchserver) {
- $datatable .= &mt('Upload to library server: [_1]',$switchserver);
- } else {
- $datatable .= ' ';
- }
- $datatable .= ' ';
- my (%checkedfields,%rolemaps);
- if (ref($settings->{$item}) eq 'HASH') {
- if (ref($settings->{$item}->{'fields'}) eq 'HASH') {
- %checkedfields = %{$settings->{$item}->{'fields'}};
- }
- if (ref($settings->{$item}->{'roles'}) eq 'HASH') {
- %rolemaps = %{$settings->{$item}->{'roles'}};
- $checkedfields{'roles'} = 1;
- }
- }
- $datatable .= ''.&mt('User data sent on launch').' '.
- '';
- foreach my $field (@fields) {
- my $checked;
- if ($checkedfields{$field}) {
- $checked = ' checked="checked"';
- }
- $datatable .= ''.
- ' '.
- $lt{$field}.' '.(' ' x2);
- }
- $datatable .= ' '.
- ''.&mt('Role mapping').' ';
- foreach my $role (@courseroles) {
- my ($selected,$selectnone);
- if (!$rolemaps{$role}) {
- $selectnone = ' selected="selected"';
- }
- $datatable .= ''.
- &Apache::lonnet::plaintext($role,'Course').' '.
- ''.
- ''.&mt('Select').' ';
- foreach my $ltirole (@ltiroles) {
- unless ($selectnone) {
- if ($rolemaps{$role} eq $ltirole) {
- $selected = ' selected="selected"';
- } else {
- $selected = '';
- }
- }
- $datatable .= ''.$ltirole.' ';
- }
- $datatable .= ' ';
- }
- $datatable .= '
';
- my %courseconfig;
- if (ref($settings->{$item}) eq 'HASH') {
- if (ref($settings->{$item}->{'crsconf'}) eq 'HASH') {
- %courseconfig = %{$settings->{$item}->{'crsconf'}};
- }
- }
- $datatable .= ''.&mt('Configurable in course').' ';
- foreach my $item ('label','title','target','linktext','explanation') {
- my $checked;
- if ($courseconfig{$item}) {
- $checked = ' checked="checked"';
- }
- $datatable .= ''.
- ' '.
- $lt{'crs'.$item}.' '.(' ' x2)."\n";
- }
- $datatable .= ' '.
- ''.&mt('Custom items sent on launch').' '.
- ' '."\n";
- $itemcount ++;
- }
- }
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- my $chgstr = ' onchange="javascript:reorderLTI(this.form,'."'ltitools_add_pos'".');"';
- $datatable .= ''."\n".
- ' '."\n".
- '';
- for (my $k=0; $k<$maxnum+1; $k++) {
- my $vpos = $k+1;
- my $selstr;
- if ($k == $maxnum) {
- $selstr = ' selected="selected" ';
- }
- $datatable .= ''.$vpos.' ';
- }
- $datatable .= ' '."\n".
- ' '.&mt('Add').' '."\n".
- ''.
- ''.&mt('Required settings').' '.
- ''.$lt{'title'}.': '."\n".
- (' 'x2).
- ''.$lt{'version'}.':'.
- '1.1 '."\n".
- (' 'x2).
- ''.$lt{'msgtype'}.':'.
- 'Launch '.
- ' '.
- ''.$lt{'url'}.': '."\n".
- (' 'x2).
- ''.$lt{'key'}.': '."\n".
- (' 'x2).
- ''.$lt{'secret'}.': '.
- ' '.&mt('Visible input').' '."\n".
- ' '.
- ''.&mt('Optional settings').' '.
- ''.&mt('Display target:');
- my %defaultdisp;
- $defaultdisp{'iframe'} = ' checked="checked"';
- foreach my $disp ('iframe','tab','window') {
- $datatable .= ' '.
- $lt{$disp}.' '.(' 'x2);
- }
- $datatable .= (' 'x4);
- foreach my $dimen ('width','height') {
- $datatable .= ''.$lt{$dimen}.' '.
- ' '.
- (' 'x2);
- }
- $datatable .= ' '.
- ''.$lt{'linktext'}.' '.
- '
'.
- ''.$lt{'explanation'}.' '.
- ''.
- '
';
- foreach my $extra ('passback','roster') {
- $datatable .= $lt{$extra}.' '.
- ' '.
- &mt('Yes').' '.(' 'x2).
- ' '.
- &mt('No').' '.(' 'x4);
- }
- $datatable .= ''.$lt{'icon'}.': '.
- '('.&mt('if larger than 21x21 pixels, image will be scaled').') ';
- if ($switchserver) {
- $datatable .= &mt('Upload to library server: [_1]',$switchserver);
- } else {
- $datatable .= ' ';
- }
- $datatable .= ' '.
- ''.&mt('User data sent on launch').' '.
- '';
- foreach my $field (@fields) {
- $datatable .= ''.
- ' '.
- $lt{$field}.' '.(' ' x2);
- }
- $datatable .= ' '.
- ''.&mt('Role mapping').' ';
- foreach my $role (@courseroles) {
- my ($checked,$checkednone);
- $datatable .= ''.
- &Apache::lonnet::plaintext($role,'Course').' '.
- ''.
- ''.&mt('Select').' ';
- foreach my $ltirole (@ltiroles) {
- $datatable .= ''.$ltirole.' ';
- }
- $datatable .= ' ';
- }
- $datatable .= '
'.
- ''.&mt('Configurable in course').' ';
- foreach my $item ('label','title','target','linktext','explanation') {
- $datatable .= ''.
- ' '.
- $lt{'crs'.$item}.' '.(' ' x2)."\n";
- }
- $datatable .= ' '.
- ''.&mt('Custom items sent on launch').' '.
- ' '."\n".
- ' '."\n".
- ' '."\n";
- $itemcount ++;
- return $datatable;
-}
-
-sub ltitools_names {
- my %lt = &Apache::lonlocal::texthash(
- 'title' => 'Title',
- 'version' => 'Version',
- 'msgtype' => 'Message Type',
- 'url' => 'URL',
- 'key' => 'Key',
- 'secret' => 'Secret',
- 'icon' => 'Icon',
- 'user' => 'Username:domain',
- 'fullname' => 'Full Name',
- 'firstname' => 'First Name',
- 'lastname' => 'Last Name',
- 'email' => 'E-mail',
- 'roles' => 'Role',
- 'window' => 'Window',
- 'tab' => 'Tab',
- 'iframe' => 'iFrame',
- 'height' => 'Height',
- 'width' => 'Width',
- 'linktext' => 'Default Link Text',
- 'explanation' => 'Default Explanation',
- 'passback' => 'Tool can return grades:',
- 'roster' => 'Tool can retrieve roster:',
- 'crstarget' => 'Display target',
- 'crslabel' => 'Course label',
- 'crstitle' => 'Course title',
- 'crslinktext' => 'Link Text',
- 'crsexplanation' => 'Explanation',
- );
-
- return %lt;
-}
-
sub print_coursedefaults {
my ($position,$dom,$settings,$rowtotal) = @_;
my ($css_class,$datatable,%checkedon,%checkedoff,%defaultchecked,@toggles);
my $itemcount = 1;
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)',
anonsurvey_threshold => 'Responder count needed before showing submissions for anonymous surveys',
coursecredits => 'Credits can be specified for courses',
- uselcmath => 'Math preview uses LON-CAPA previewer (javascript) in place of DragMath (Java)',
- usejsme => 'Molecule editor uses JSME (HTML5) in place of JME (Java)',
- postsubmit => 'Disable submit button/keypress following student submission',
- 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',
);
my %staticdefaults = (
anonsurvey_threshold => 10,
uploadquota => 500,
- postsubmit => 60,
- mysqltables => 172800,
);
if ($position eq 'top') {
- %defaultchecked = (
- 'uselcmath' => 'on',
- 'usejsme' => 'on',
- 'canclone' => 'none',
- );
- @toggles = ('uselcmath','usejsme');
+ %defaultchecked = ('canuse_pdfforms' => 'off');
+ @toggles = ('canuse_pdfforms');
($datatable,$itemcount) = &radiobutton_prefs($settings,\@toggles,\%defaultchecked,
- \%choices,$itemcount);
- $css_class = $itemcount%2?' class="LC_odd_row"':'';
- $datatable .=
- ''.
- ''.$choices{'canclone'}.
- ' ';
- my $currcanclone = 'none';
- my $onclick;
- my @cloneoptions = ('none','domain');
- my %clonetitles = (
- none => 'No additional course requesters',
- domain => "Any course requester in course's domain",
- instcode => 'Course requests for official courses ...',
- );
- my (%codedefaults,@code_order,@posscodes);
- if (&Apache::lonnet::auto_instcode_defaults($dom,\%codedefaults,
- \@code_order) eq 'ok') {
- if (@code_order > 0) {
- push(@cloneoptions,'instcode');
- $onclick = ' onclick="toggleDisplay(this.form,'."'cloneinstcode'".');"';
- }
- }
- if (ref($settings) eq 'HASH') {
- if ($settings->{'canclone'}) {
- if (ref($settings->{'canclone'}) eq 'HASH') {
- if (ref($settings->{'canclone'}{'instcode'}) eq 'ARRAY') {
- if (@code_order > 0) {
- $currcanclone = 'instcode';
- @posscodes = @{$settings->{'canclone'}{'instcode'}};
- }
- }
- } elsif ($settings->{'canclone'} eq 'domain') {
- $currcanclone = $settings->{'canclone'};
- }
- }
- }
- foreach my $option (@cloneoptions) {
- my ($checked,$additional);
- if ($currcanclone eq $option) {
- $checked = ' checked="checked"';
- }
- if ($option eq 'instcode') {
- if (@code_order) {
- my $show = 'none';
- if ($checked) {
- $show = 'block';
- }
- $additional = '
'.
- &mt('Institutional codes for new and cloned course have identical:').
- ' ';
- foreach my $item (@code_order) {
- my $codechk;
- if ($checked) {
- if (grep(/^\Q$item\E$/,@posscodes)) {
- $codechk = ' checked="checked"';
- }
- }
- $additional .= ''.
- ' '.
- $item.' ';
- }
- $additional .= (' 'x2).'('.&mt('check as many as needed').')';
- }
- }
- $datatable .=
- ' '.$clonetitles{$option}.
- ' '.$additional.' ';
- }
- $datatable .= ' '.
- ' ';
- $itemcount ++;
+ \%choices,$itemcount);
} else {
$css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
- my ($currdefresponder,%defcredits,%curruploadquota,%deftimeout,%currmysql);
+ my ($currdefresponder,$def_official_credits,$def_unofficial_credits,$def_textbook_credits,
+ %curruploadquota);
my $currusecredits = 0;
- my $postsubmitclient = 1;
my @types = ('official','unofficial','community','textbook');
if (ref($settings) eq 'HASH') {
$currdefresponder = $settings->{'anonsurvey_threshold'};
@@ -4216,51 +2784,14 @@ sub print_coursedefaults {
}
}
if (ref($settings->{'coursecredits'}) eq 'HASH') {
- foreach my $type (@types) {
- next if ($type eq 'community');
- $defcredits{$type} = $settings->{'coursecredits'}->{$type};
- if ($defcredits{$type} ne '') {
- $currusecredits = 1;
- }
- }
- }
- if (ref($settings->{'postsubmit'}) eq 'HASH') {
- if ($settings->{'postsubmit'}->{'client'} eq 'off') {
- $postsubmitclient = 0;
- foreach my $type (@types) {
- $deftimeout{$type} = $staticdefaults{'postsubmit'};
- }
- } else {
- foreach my $type (@types) {
- if (ref($settings->{'postsubmit'}->{'timeout'}) eq 'HASH') {
- if ($settings->{'postsubmit'}->{'timeout'}->{$type} =~ /^\d+$/) {
- $deftimeout{$type} = $settings->{'postsubmit'}->{'timeout'}->{$type};
- } else {
- $deftimeout{$type} = $staticdefaults{'postsubmit'};
- }
- } else {
- $deftimeout{$type} = $staticdefaults{'postsubmit'};
- }
- }
- }
- } else {
- foreach my $type (@types) {
- $deftimeout{$type} = $staticdefaults{'postsubmit'};
+ $def_official_credits = $settings->{'coursecredits'}->{'official'};
+ $def_unofficial_credits = $settings->{'coursecredits'}->{'unofficial'};
+ $def_textbook_credits = $settings->{'coursecredits'}->{'textbook'};
+ if (($def_official_credits ne '') || ($def_unofficial_credits ne '') ||
+ ($def_textbook_credits ne '')) {
+ $currusecredits = 1;
}
}
- if (ref($settings->{'mysqltables'}) eq 'HASH') {
- foreach my $type (keys(%{$settings->{'mysqltables'}})) {
- $currmysql{$type} = $settings->{'mysqltables'}{$type};
- }
- } else {
- foreach my $type (@types) {
- $currmysql{$type} = $staticdefaults{'mysqltables'};
- }
- }
- } else {
- foreach my $type (@types) {
- $deftimeout{$type} = $staticdefaults{'postsubmit'};
- }
}
if (!$currdefresponder) {
$currdefresponder = $staticdefaults{'anonsurvey_threshold'};
@@ -4300,14 +2831,21 @@ sub print_coursedefaults {
$display = 'block';
}
my $additional = ''.
- '
'.&mt('Default credits').' '."\n";
+ ''.
+ &mt('Default credits for official courses [_1]',
+ ' ').
+ ' '.
+ ''.
+ &mt('Default credits for unofficial courses [_1]',
+ ' ').
+ ' '.
+ ''.
+ &mt('Default credits for textbook courses [_1]',
+ ' ').
+ ' '."\n";
%defaultchecked = ('coursecredits' => 'off');
@toggles = ('coursecredits');
my $current = {
@@ -4315,46 +2853,9 @@ sub print_coursedefaults {
};
(my $table,$itemcount) =
&radiobutton_prefs($current,\@toggles,\%defaultchecked,
- \%choices,$itemcount,$onclick,$additional,'left');
+ \%choices,$itemcount,$onclick,$additional);
$datatable .= $table;
- $onclick = "toggleDisplay(this.form,'studentsubmission');";
- my $display = 'none';
- if ($postsubmitclient) {
- $display = 'block';
- }
- $additional = ''.
- &mt('Number of seconds submit is disabled').'
'.
- '
'.&mt('Enter 0 to remain disabled until page reload.').' '.
- '
'."\n";
- %defaultchecked = ('postsubmit' => 'on');
- @toggles = ('postsubmit');
- $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'}.
- ' '.
- ''.
- ' '."\n";
$itemcount ++;
-
}
$$rowtotal += $itemcount;
return $datatable;
@@ -4559,24 +3060,21 @@ sub print_validation_rows {
}
if ($caller eq 'requestcourses') {
my %currhash;
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'validation'}) eq 'HASH') {
- if ($settings->{'validation'}{'dc'} ne '') {
- $currhash{$settings->{'validation'}{'dc'}} = 1;
- }
+ if (ref($settings->{'validation'}) eq 'HASH') {
+ if ($settings->{'validation'}{'dc'} ne '') {
+ $currhash{$settings->{'validation'}{'dc'}} = 1;
}
}
my $numinrow = 2;
my ($numdc,$dctable,$rows) = &active_dc_picker($dom,$numinrow,'radio',
'validationdc',%currhash);
- my $css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
- $datatable .= '';
if ($numdc > 1) {
- $datatable .= &mt('Course creation processed as: (choose Dom. Coord.)');
+ $datatable .= ' '.
+ &mt('Course creation processed as: (choose Dom. Coord.)').
+ ' '.$dctable.' ';
} else {
- $datatable .= &mt('Course creation processed as: ');
+ $datatable .= $dctable.'';
}
- $datatable .= ''.$dctable.' ';
$itemcount ++;
}
if (ref($rowtotal)) {
@@ -4599,13 +3097,7 @@ sub print_usersessions {
if ($position eq 'top') {
if (keys(%serverhomes) > 1) {
my %spareid = ¤t_offloads_to($dom,$settings,\%servers);
- my $curroffloadnow;
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'offloadnow'}) eq 'HASH') {
- $curroffloadnow = $settings->{'offloadnow'};
- }
- }
- $datatable .= &spares_row($dom,\%servers,\%spareid,\%serverhomes,\%altids,$curroffloadnow,$rowtotal);
+ $datatable .= &spares_row($dom,\%servers,\%spareid,\%serverhomes,\%altids,$rowtotal);
} else {
$datatable .= ''.
&mt('Nothing to set here, as the cluster to which this domain belongs only contains one server.');
@@ -4855,7 +3347,7 @@ sub current_offloads_to {
}
sub spares_row {
- my ($dom,$servers,$spareid,$serverhomes,$altids,$curroffloadnow,$rowtotal) = @_;
+ my ($dom,$servers,$spareid,$serverhomes,$altids,$rowtotal) = @_;
my $css_class;
my $numinrow = 4;
my $itemcount = 1;
@@ -4875,21 +3367,12 @@ sub spares_row {
}
}
next unless (ref($spareid->{$server}) eq 'HASH');
- my $checkednow;
- if (ref($curroffloadnow) eq 'HASH') {
- if ($curroffloadnow->{$server}) {
- $checkednow = ' checked="checked"';
- }
- }
$css_class = $itemcount%2 ? ' class="LC_odd_row"' : '';
$datatable .= '
'.
&mt('[_1] when busy, offloads to:'
- ,''.$server.' ').' '.
- ''."\n".
- ' '.
- ' '.&mt('Switch active users on next access').' '.
+ ,''.$server.' ').
"\n";
my (%current,%canselect);
my @choices =
@@ -5094,9 +3577,6 @@ sub print_loadbalancing {
my ($numspares,@spares) = &count_servers($lonhost,%servers);
my @sparestypes = ('primary','default');
my %typetitles = &sparestype_titles();
- my %hostherechecked = (
- no => ' checked="checked"',
- );
foreach my $sparetype (@sparestypes) {
my $targettable;
for (my $i=0; $i<$numspares; $i++) {
@@ -5116,10 +3596,9 @@ sub print_loadbalancing {
$disabled = ' disabled="disabled"';
}
$targettable .=
- ' '.
- ' '.$chkboxval.
- ' ';
+ '';
my $rem = $i%($numinrow);
if ($rem == 0) {
if (($i > 0) && ($i < $numspares-1)) {
@@ -5142,23 +3621,6 @@ sub print_loadbalancing {
$datatable .= ''.$typetitles{$sparetype}.' '.
' ';
}
- $hostherechecked{$sparetype} = '';
- if (ref($currtargets{$lonhost}) eq 'HASH') {
- if (ref($currtargets{$lonhost}{$sparetype}) eq 'ARRAY') {
- if (grep(/^\Q$lonhost\E$/,@{$currtargets{$lonhost}{$sparetype}})) {
- $hostherechecked{$sparetype} = ' checked="checked"';
- $hostherechecked{'no'} = '';
- }
- }
- }
- }
- $datatable .= &mt('Hosting on balancer itself').' '.
- ' '.&mt('No').' ';
- foreach my $sparetype (@sparestypes) {
- $datatable .= ''.$typetitles{$sparetype}.
- ' ';
}
$datatable .= ' '.
&loadbalancing_rules($dom,$intdom,$currrules{$lonhost},
@@ -5226,7 +3688,7 @@ sub loadbalancing_rules {
if (ref($currrules) eq 'HASH') {
$current = $currrules->{$type};
}
- if (($type eq '_LC_external') || ($type eq '_LC_internetdom')) {
+ if (($type eq '_LC_external') || ($type eq '_LC_internetdom') || ($type eq '_LC_ipchange')) {
if ($dom ne &Apache::lonnet::host_domain($lonhost)) {
$current = '';
}
@@ -5251,14 +3713,9 @@ sub loadbalancing_titles {
'_LC_ipchange' => &mt('Non-SSO users with IP mismatch'),
);
my @alltypes = ('_LC_adv','_LC_author','_LC_internetdom','_LC_external','_LC_ipchangesso','_LC_ipchange');
- my @available;
if (ref($types) eq 'ARRAY') {
- @available = @{$types};
- }
- unless (grep(/^default$/,@available)) {
- push(@available,'default');
+ unshift(@alltypes,@{$types},'default');
}
- unshift(@alltypes,@available);
my %titles;
foreach my $type (@alltypes) {
if ($type =~ /^_LC_/) {
@@ -5283,7 +3740,7 @@ sub loadbalance_rule_row {
my @rulenames;
my %ruletitles = &offloadtype_text();
if (($type eq '_LC_ipchangesso') || ($type eq '_LC_ipchange')) {
- @rulenames = ('balancer','offloadedto','specific');
+ @rulenames = ('balancer','offloadedto');
} else {
@rulenames = ('default','homeserver');
if ($type eq '_LC_external') {
@@ -5294,7 +3751,7 @@ sub loadbalance_rule_row {
push(@rulenames,'none');
}
my $style = $targets_div_style;
- if (($type eq '_LC_external') || ($type eq '_LC_internetdom')) {
+ if (($type eq '_LC_external') || ($type eq '_LC_internetdom') || ($type eq '_LC_ipchange')) {
$style = $homedom_div_style;
}
my $space;
@@ -5345,13 +3802,8 @@ sub loadbalance_rule_row {
' ';
- if (($rulenames[$i] eq 'specific') && ($type =~ /^_LC_ipchange/)) {
- $output .= $ruletitles{'particular'};
- } else {
- $output .= $ruletitles{$rulenames[$i]};
- }
- $output .= ''.$extra.' '."\n";
+ ')"'.$checked.' /> '.$ruletitles{$rulenames[$i]}.
+ ''.$extra.' '."\n";
}
$output .= ''."\n";
return $output;
@@ -5366,7 +3818,6 @@ sub offloadtype_text {
'none' => 'No offload',
'balancer' => 'Session hosted on Load Balancer, after re-authentication',
'offloadedto' => 'Session hosted on offload server, after re-authentication',
- 'particular' => 'Session hosted (after re-auth) on server:',
);
return %ruletitles;
}
@@ -5381,15 +3832,14 @@ sub sparestype_titles {
sub contact_titles {
my %titles = &Apache::lonlocal::texthash (
- 'supportemail' => 'Support E-mail address',
- 'adminemail' => 'Default Server Admin E-mail address',
- 'errormail' => 'Error reports to be e-mailed to',
- 'packagesmail' => 'Package update alerts to be e-mailed to',
- 'helpdeskmail' => "Helpdesk requests from all users in this domain",
- 'otherdomsmail' => 'Helpdesk requests from users in other (unconfigured) domains',
- 'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)',
- 'requestsmail' => 'E-mail from course requests requiring approval',
- 'updatesmail' => 'E-mail from nightly check of LON-CAPA module integrity/updates',
+ 'supportemail' => 'Support E-mail address',
+ 'adminemail' => 'Default Server Admin E-mail address',
+ 'errormail' => 'Error reports to be e-mailed to',
+ 'packagesmail' => 'Package update alerts to be e-mailed to',
+ 'helpdeskmail' => 'Helpdesk requests to be e-mailed to',
+ 'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)',
+ 'requestsmail' => 'E-mail from course requests requiring approval',
+ 'updatesmail' => 'E-mail from nightly check of LON-CAPA module integrity/updates',
'idconflictsmail' => 'E-mail from bi-nightly check for multiple users sharing same student/employee ID',
);
my %short_titles = &Apache::lonlocal::texthash (
@@ -5399,34 +3849,6 @@ sub contact_titles {
return (\%titles,\%short_titles);
}
-sub helpform_fields {
- my %titles = &Apache::lonlocal::texthash (
- 'username' => 'Name',
- 'user' => 'Username/domain',
- 'phone' => 'Phone',
- 'cc' => 'Cc e-mail',
- 'course' => 'Course Details',
- 'section' => 'Sections',
- 'screenshot' => 'File upload',
- );
- my @fields = ('username','phone','user','course','section','cc','screenshot');
- my %possoptions = (
- username => ['yes','no','req'],
- phone => ['yes','no','req'],
- user => ['yes','no'],
- cc => ['yes','no'],
- course => ['yes','no'],
- section => ['yes','no'],
- screenshot => ['yes','no'],
- );
- my %fieldoptions = &Apache::lonlocal::texthash (
- 'yes' => 'Optional',
- 'req' => 'Required',
- 'no' => "Not shown",
- );
- return (\@fields,\%titles,\%fieldoptions,\%possoptions);
-}
-
sub tool_titles {
my %titles = &Apache::lonlocal::texthash (
aboutme => 'Personal web page',
@@ -5634,7 +4056,6 @@ sub print_selfcreation {
my %radiohash;
my $numinrow = 4;
map { $radiohash{'cancreate_'.$_} = 1; } @selfcreate;
- my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
if ($position eq 'top') {
my %choices = &Apache::lonlocal::texthash (
cancreate_login => 'Institutional Login',
@@ -5650,11 +4071,13 @@ sub print_selfcreation {
\%choices,$itemcount,$onclick);
$$rowtotal += $itemcount;
+ my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
+
if (ref($usertypes) eq 'HASH') {
if (keys(%{$usertypes}) > 0) {
$datatable .= &insttypes_row($createsettings,$types,$usertypes,
$dom,$numinrow,$othertitle,
- 'statustocreate',$rowtotal);
+ 'statustocreate',$$rowtotal);
$$rowtotal ++;
}
}
@@ -5677,10 +4100,8 @@ sub print_selfcreation {
$datatable .= '';
}
my $currval;
- if (ref($createsettings) eq 'HASH') {
- if (ref($createsettings->{'shibenv'}) eq 'HASH') {
- $currval = $createsettings->{'shibenv'}{$fields[$i]};
- }
+ if (ref($createsettings->{'shibenv'}) eq 'HASH') {
+ $currval = $createsettings->{'shibenv'}{$fields[$i]};
}
$datatable .= ''.
''.
@@ -5699,22 +4120,16 @@ sub print_selfcreation {
$$rowtotal ++;
} elsif ($position eq 'middle') {
my %domconf = &Apache::lonnet::get_dom('configuration',['usermodification'],$dom);
- my @posstypes;
+ my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
+ $usertypes->{'default'} = $othertitle;
if (ref($types) eq 'ARRAY') {
- @posstypes = @{$types};
- }
- unless (grep(/^default$/,@posstypes)) {
- push(@posstypes,'default');
- }
- my %usertypeshash;
- if (ref($usertypes) eq 'HASH') {
- %usertypeshash = %{$usertypes};
- }
- $usertypeshash{'default'} = $othertitle;
- foreach my $status (@posstypes) {
- $datatable .= &modifiable_userdata_row('selfcreate',$status,$domconf{'usermodification'},
- $numinrow,$$rowtotal,\%usertypeshash);
- $$rowtotal ++;
+ push(@{$types},'default');
+ $usertypes->{'default'} = $othertitle;
+ foreach my $status (@{$types}) {
+ $datatable .= &modifiable_userdata_row('selfcreate',$status,$domconf{'usermodification'},
+ $numinrow,$$rowtotal,$usertypes);
+ $$rowtotal ++;
+ }
}
} else {
my %choices = &Apache::lonlocal::texthash (
@@ -5732,33 +4147,29 @@ sub print_selfcreation {
my $onclick = "toggleDisplay(this.form,'emailoptions');";
my $additional = '';
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
- if (ref($domdefaults{'inststatusguest'}) eq 'ARRAY') {
+ my $usertypes = {};
+ my $order = [];
+ if ((ref($domdefaults{'inststatustypes'}) eq 'HASH') && (ref($domdefaults{'inststatusguest'}) eq 'ARRAY')) {
+ $usertypes = $domdefaults{'inststatustypes'};
$order = $domdefaults{'inststatusguest'};
}
- my (@ordered,%usertypeshash);
if (ref($order) eq 'ARRAY') {
- @ordered = @{$order};
- }
- if (@ordered) {
- unless (grep(/^default$/,@ordered)) {
- push(@ordered,'default');
- }
- if (ref($usertypes) eq 'HASH') {
- %usertypeshash = %{$usertypes};
- }
- $usertypeshash{'default'} = $othertitle;
- $additional .= '
';
- foreach my $status (@ordered) {
- $additional .= ''.$usertypeshash{$status}.' ';
- }
- $additional .= ' ';
- foreach my $status (@ordered) {
- $additional .= ''.&email_as_username($rowtotal,$processing,$status).' ';
+ push(@{$order},'default');
+ if (@{$order} > 1) {
+ $usertypes->{'default'} = &mt('Other users');
+ $additional .= '';
+ foreach my $status (@{$order}) {
+ $additional .= ''.$usertypes->{$status}.' ';
+ }
+ $additional .= ' ';
+ foreach my $status (@{$order}) {
+ $additional .= ''.&email_as_username($rowtotal,$processing,$status).' ';
+ }
+ $additional .= '
';
+ } else {
+ $usertypes->{'default'} = &mt('All users');
+ $additional .= &email_as_username($rowtotal,$processing);
}
- $additional .= '
';
- } else {
- $usertypeshash{'default'} = $othertitle;
- $additional .= &email_as_username($rowtotal,$processing);
}
$additional .= '
'."\n";
@@ -5769,10 +4180,12 @@ sub print_selfcreation {
$$rowtotal ++;
my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info();
$numinrow = 1;
- foreach my $status (@ordered) {
- $datatable .= &modifiable_userdata_row('cancreate','emailusername_'.$status,$settings,
- $numinrow,$$rowtotal,\%usertypeshash,$infofields,$infotitles);
- $$rowtotal ++;
+ if (ref($order) eq 'ARRAY') {
+ foreach my $status (@{$order}) {
+ $datatable .= &modifiable_userdata_row('cancreate','emailusername_'.$status,$settings,
+ $numinrow,$$rowtotal,$usertypes,$infofields,$infotitles);
+ $$rowtotal ++;
+ }
}
my ($emailrules,$emailruleorder) =
&Apache::lonnet::inst_userrules($dom,'email');
@@ -5843,8 +4256,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') {
@@ -5862,11 +4274,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'};
@@ -5900,11 +4307,7 @@ sub captcha_choice {
$currpub.'" size="40" /> '."\n".
''.$privtext.' '."\n".
' '.
- ''.$vertext.' '."\n".
- ' '.
- '
'."\n".
+ $currpriv.'" size="40" /> '."\n".
'';
return $output;
}
@@ -6039,10 +4442,7 @@ sub print_usermodification {
sub print_defaults {
my ($position,$dom,$settings,$rowtotal) = @_;
my $rownum = 0;
- my ($datatable,$css_class,$titles);
- unless ($position eq 'bottom') {
- $titles = &defaults_titles($dom);
- }
+ my ($datatable,$css_class);
if ($position eq 'top') {
my @items = ('auth_def','auth_arg_def','lang_def','timezone_def',
'datelocale_def','portal_def');
@@ -6055,6 +4455,7 @@ sub print_defaults {
$defaults{$item} = $domdefaults{$item};
}
}
+ my $titles = &defaults_titles($dom);
foreach my $item (@items) {
if ($rownum%2) {
$css_class = '';
@@ -6089,8 +4490,11 @@ sub print_defaults {
my $includeempty = 1;
$datatable .= &Apache::loncommon::select_datelocale($item,$defaults{$item},undef,$includeempty);
} elsif ($item eq 'lang_def') {
- my $includeempty = 1;
- $datatable .= &Apache::loncommon::select_language($item,$defaults{$item},$includeempty);
+ my %langchoices = &get_languages_hash();
+ $langchoices{''} = 'No language preference';
+ %langchoices = &Apache::lonlocal::texthash(%langchoices);
+ $datatable .= &Apache::loncommon::select_form($defaults{$item},$item,
+ \%langchoices);
} else {
my $size;
if ($item eq 'portal_def') {
@@ -6102,87 +4506,8 @@ sub print_defaults {
$datatable .= '';
$rownum ++;
}
- } elsif ($position eq 'middle') {
- my @items = ('intauth_cost','intauth_check','intauth_switch');
- my %defaults;
- if (ref($settings) eq 'HASH') {
- %defaults = %{$settings};
- if ($defaults{'intauth_cost'} !~ /^\d+$/) {
- $defaults{'intauth_cost'} = 10;
- }
- if ($defaults{'intauth_check'} !~ /^(0|1|2)$/) {
- $defaults{'intauth_check'} = 0;
- }
- if ($defaults{'intauth_switch'} !~ /^(0|1|2)$/) {
- $defaults{'intauth_switch'} = 0;
- }
- } else {
- %defaults = (
- 'intauth_cost' => 10,
- 'intauth_check' => 0,
- 'intauth_switch' => 0,
- );
- }
- foreach my $item (@items) {
- if ($rownum%2) {
- $css_class = '';
- } else {
- $css_class = ' class="LC_odd_row" ';
- }
- $datatable .= ''.
- ''.$titles->{$item}.
- ' ';
- if ($item eq 'intauth_switch') {
- my @options = (0,1,2);
- my %optiondesc = &Apache::lonlocal::texthash (
- 0 => 'No',
- 1 => 'Yes',
- 2 => 'Yes, and copy existing passwd file to passwd.bak file',
- );
- $datatable .= '';
- } elsif ($item eq 'intauth_check') {
- my @options = (0,1,2);
- my %optiondesc = &Apache::lonlocal::texthash (
- 0 => 'No',
- 1 => 'Yes, allow login then update passwd file using default cost (if higher)',
- 2 => 'Yes, disallow login if stored cost is less than domain default',
- );
- $datatable .= '';
- } else {
- $datatable .= ' ';
- }
- $datatable .= ' ';
- $rownum ++;
- }
} else {
- my %defaults;
+ my (%defaults);
if (ref($settings) eq 'HASH') {
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH') &&
(ref($settings->{'inststatusguest'}) eq 'ARRAY')) {
@@ -6238,7 +4563,7 @@ sub print_defaults {
$datatable .= ''.$vpos.' ';
}
$datatable .= ' '.&mt('Internal ID:').
- ' '.
+ ' '.
' '.&mt('(new)').
''.
&mt('Name displayed:').
@@ -6277,9 +4602,6 @@ sub defaults_titles {
'timezone_def' => 'Default timezone',
'datelocale_def' => 'Default locale for dates',
'portal_def' => 'Portal/Default URL',
- 'intauth_cost' => 'Encryption cost for bcrypt (positive integer)',
- 'intauth_check' => 'Check bcrypt cost if authenticated',
- 'intauth_switch' => 'Existing crypt-based switched to bcrypt on authentication',
);
if ($dom) {
my $uprimary_id = &Apache::lonnet::domain($dom,'primary');
@@ -6778,47 +5100,19 @@ sub serverstatus_pages {
return ('userstatus','lonstatus','loncron','server-status','codeversions',
'checksums','clusterstatus','metadata_keywords','metadata_harvest',
'takeoffline','takeonline','showenv','toggledebug','ping','domconf',
- 'uniquecodes','diskusage','coursecatalog');
+ 'uniquecodes','diskusage');
}
sub defaults_javascript {
my ($settings) = @_;
- my $intauthcheck = &mt('Warning: disallowing login for an authenticated user if the stored cost is less than the default will require a password reset by/for the user.');
- my $intauthcost = &mt('Warning: bcrypt encryption cost for internal authentication must be an integer.');
- &js_escape(\$intauthcheck);
- &js_escape(\$intauthcost);
- my $intauthjs = <<"ENDSCRIPT";
-
-function warnIntAuth(field) {
- if (field.name == 'intauth_check') {
- if (field.value == '2') {
- alert('$intauthcheck');
- }
- }
- if (field.name == 'intauth_cost') {
- field.value.replace(/\s/g,'');
- if (field.value != '') {
- var regexdigit=/^\\d+\$/;
- if (!regexdigit.test(field.value)) {
- alert('$intauthcost');
- }
- }
- }
- return;
-}
-
-ENDSCRIPT
-
- if (ref($settings) ne 'HASH') {
- return &Apache::lonhtmlcommon::scripttag($intauthjs);
- }
+ my ($output,$jstext);
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH')) {
my $maxnum = scalar(@{$settings->{'inststatusorder'}});
if ($maxnum eq '') {
$maxnum = 0;
}
$maxnum ++;
- my $jstext = ' var inststatuses = Array('."'".join("','",@{$settings->{'inststatusorder'}})."'".');';
+ $jstext = ' var inststatuses = Array('."'".join("','",@{$settings->{'inststatusorder'}})."'".');';
return <<"ENDSCRIPT";
ENDSCRIPT
- } else {
- return &Apache::lonhtmlcommon::scripttag($intauthjs);
}
}
@@ -6900,10 +5190,7 @@ sub coursecategories_javascript {
}
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 $choose_again = "\n".&mt('Please use a different name for the new top level category.');
- &js_escape(\$instcode_reserved);
- &js_escape(\$communities_reserved);
- &js_escape(\$choose_again);
+ my $choose_again = '\\n'.&mt('Please use a different name for the new top level category.');
$output = <<"ENDSCRIPT";