--- loncom/interface/domainprefs.pm 2010/03/11 02:51:44 1.102.2.11 +++ loncom/interface/domainprefs.pm 2010/03/08 14:36:24 1.129 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.102.2.11 2010/03/11 02:51:44 raeburn Exp $ +# $Id: domainprefs.pm,v 1.129 2010/03/08 14:36:24 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -202,11 +202,12 @@ sub handler { 'quotas','autoenroll','autoupdate','autocreate', 'directorysrch','usercreation','usermodification', 'contacts','defaults','scantron','coursecategories', - 'serverstatuses','requestcourses','coursedefaults'],$dom); + 'serverstatuses','requestcourses','helpsettings', + 'coursedefaults'],$dom); my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll', 'autoupdate','autocreate','directorysrch','contacts', 'usercreation','usermodification','scantron', - 'requestcourses','coursecategories','serverstatuses', + 'requestcourses','coursecategories','serverstatuses','helpsettings', 'coursedefaults'); my %prefs = ( 'rolecolors' => @@ -221,12 +222,13 @@ sub handler { {col1 => 'Administrator Settings', col2 => '',}], }, - 'login' => + 'login' => { text => 'Log-in page options', help => 'Domain_Configuration_Login_Page', header => [{col1 => 'Item', col2 => '',}], }, + 'defaults' => { text => 'Default authentication/language/timezone', help => 'Domain_Configuration_LangTZAuth', @@ -255,7 +257,7 @@ sub handler { col2 => 'Updataeable user data'}], }, 'autocreate' => - { text => 'Auto-course creation settings', + { text => 'Auto-course creation settings', help => 'Domain_Configuration_Auto_Creation', header => [{col1 => 'Configuration Setting', col2 => 'Value',}], @@ -325,12 +327,26 @@ sub handler { col3 => 'Specific IPs', }], }, - 'coursedefaults' => + 'helpsettings' => + {text => 'Help page settings', + help => 'Domain_Configuration_Help_Settings', + header => [{col1 => 'Authenticated Help Settings', + col2 => ''}, + {col1 => 'Unauthenticated Help Settings', + col2 => ''}], + }, + 'coursedefaults' => {text => 'Course/Community defaults', help => 'Domain_Configuration_Course_Defaults', header => [{col1 => 'Setting', col2 => 'Value',}], }, + 'privacy' => + {text => 'User Privacy', + help => 'Domain_Configuration_User_Privacy', + header => [{col1 => 'Setting', + col2 => 'Value',}], + }, ); my %servers = &dom_servers($dom); if (keys(%servers) > 1) { @@ -429,6 +445,8 @@ sub process_changes { $output = &modify_serverstatuses($dom,%domconfig); } elsif ($action eq 'requestcourses') { $output = &modify_quotas($dom,$action,%domconfig); + } elsif ($action eq 'helpsettings') { + $output = &modify_helpsettings($r,$dom,$confname,%domconfig); } elsif ($action eq 'coursedefaults') { $output = &modify_coursedefaults($dom,%domconfig); } @@ -456,7 +474,7 @@ sub print_config_box { } if ($numheaders > 1) { my $colspan = ''; - if (($action eq 'rolecolors') || ($action eq 'coursecategories')) { + if (($action eq 'rolecolors') || ($action eq 'coursecategories') || ($action eq 'helpsettings')) { $colspan = ' colspan="2"'; } $output .= ' @@ -481,7 +499,9 @@ sub print_config_box { $colspan = ' colspan="2"'; } elsif ($action eq 'requestcourses') { $output .= &print_quotas($dom,$settings,\$rowtotal,$action); - } else { + } elsif ($action eq 'helpsettings') { + $output .= &print_helpsettings('top',$dom,$confname,$settings,\$rowtotal); + } elsif ($action eq 'rolecolors') { $output .= &print_rolecolors($phase,'student',$dom,$confname,$settings,\$rowtotal); } $output .= ' @@ -532,7 +552,9 @@ sub print_config_box { $output .= &print_login('bottom',$dom,$confname,$phase,$settings,\$rowtotal); } elsif ($action eq 'requestcourses') { $output .= &print_courserequestmail($dom,$settings,\$rowtotal); - } else { + } elsif ($action eq 'helpsettings') { + $output .= &print_helpsettings('bottom',$dom,$confname,$settings,\$rowtotal); + } elsif ($action eq 'rolecolors') { $output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).' @@ -618,7 +640,9 @@ sub print_config_box { $output .= &print_scantronformat($r,$dom,$confname,$settings,\$rowtotal); } elsif ($action eq 'serverstatuses') { $output .= &print_serverstatuses($dom,$settings,\$rowtotal); - } elsif ($action eq 'coursedefaults') { + } elsif ($action eq 'helpsettings') { + $output .= &print_helpsettings('top',$dom,$confname,$settings,\$rowtotal); + } elsif ($action eq 'coursedefaults') { $output .= &print_coursedefaults($dom,$settings,\$rowtotal); } } @@ -634,6 +658,7 @@ sub print_login { my ($position,$dom,$confname,$phase,$settings,$rowtotal) = @_; my ($css_class,$datatable); my %choices = &login_choices(); + my $itemcount = 1; if ($position eq 'top') { my %servers = &dom_servers($dom); @@ -839,30 +864,30 @@ sub login_choices { my %choices = &Apache::lonlocal::texthash ( coursecatalog => 'Display Course/Community Catalog link?', - adminmail => "Display Administrator's E-mail Address?", + adminmail => "Display Administrator's E-mail Address?", disallowlogin => "Login page requests redirected", hostid => "Server", server => "Redirect to:", serverpath => "Path", - custompath => "Custom", + custompath => "Custom", exempt => "Exempt IP(s)", directlogin => "No redirect", - newuser => "Link to create a user account", - img => "Header", - logo => "Main Logo", - domlogo => "Domain Logo", - login => "Log-in Header", - textcol => "Text color", - bgcol => "Box color", - bgs => "Background colors", - links => "Link colors", - font => "Font color", - pgbg => "Header", - mainbg => "Page", - sidebg => "Login box", - link => "Link", - alink => "Active link", - vlink => "Visited link", + newuser => "Link to create a user account", + img => "Header", + logo => "Main Logo", + domlogo => "Domain Logo", + login => "Log-in Header", + textcol => "Text color", + bgcol => "Box color", + bgs => "Background colors", + links => "Link colors", + font => "Font color", + pgbg => "Header", + mainbg => "Page", + sidebg => "Login box", + link => "Link", + alink => "Active link", + vlink => "Visited link", ); return %choices; } @@ -880,6 +905,7 @@ sub print_rolecolors { my %defaults = ( img => $defaultdesign{$role.'.img'}, font => $defaultdesign{$role.'.font'}, + fontmenu => $defaultdesign{$role.'.fontmenu'}, ); foreach my $item (@bgs) { $defaults{'bgs'}{$item} = $defaultdesign{$role.'.'.$item}; @@ -897,6 +923,10 @@ sub print_rolecolors { $designs{'font'} = $settings->{$role}->{'font'}; $is_custom{'font'} = 1; } + if ($settings->{$role}->{'fontmenu'} ne '') { + $designs{'fontmenu'} = $settings->{$role}->{'fontmenu'}; + $is_custom{'fontmenu'} = 1; + } foreach my $item (@bgs) { if ($settings->{$role}->{$item} ne '') { $designs{'bgs'}{$item} = $settings->{$role}->{$item}; @@ -915,6 +945,10 @@ sub print_rolecolors { $designs{img} = $designhash{$dom.'.'.$role.'.img'}; $is_custom{'img'} = 1; } + if ($designhash{$dom.'.'.$role.'.fontmenu'} ne '') { + $designs{fontmenu} = $designhash{$dom.'.'.$role.'.fontmenu'}; + $is_custom{'fontmenu'} = 1; + } if ($designhash{$dom.'.'.$role.'.font'} ne '') { $designs{font} = $designhash{$dom.'.'.$role.'.font'}; $is_custom{'font'} = 1; @@ -943,7 +977,7 @@ sub display_color_options { my ($dom,$confname,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs, $images,$bgs,$links,$alt_text,$rowtotal,$logintext,$loginheader) = @_; my $css_class = $itemcount%2?' class="LC_odd_row"':''; - my $datatable = ''. + my $datatable = ''. ''.$choices->{'font'}.''; if (!$is_custom->{'font'}) { $datatable .= ''.&mt('Default in use:').' '.$defaults->{'font'}.''; @@ -957,6 +991,22 @@ sub display_color_options { '    '. ''; + unless ($role eq 'login') { + $datatable .= ''. + ''.$choices->{'fontmenu'}.''; + if (!$is_custom->{'fontmenu'}) { + $datatable .= ''.&mt('Default in use:').' '.$defaults->{'fontmenu'}.''; + } else { + $datatable .= ' '; + } + $fontlink = &color_pick($phase,$role,'fontmenu',$choices->{'fontmenu'},$designs->{'fontmenu'}); + $datatable .= ''. + ' '.$fontlink. + '    '. + ''; + } my $switchserver = &check_switchserver($dom,$confname); foreach my $img (@{$images}) { $itemcount ++; @@ -1343,7 +1393,7 @@ sub print_quotas { if ($context eq 'requestcourses') { $datatable .= ''; foreach my $item (@usertools) { - $datatable .= ''.$cell{$item}.''; + $datatable .= ''.$cell{$item}.''; } $datatable .= ''; } @@ -1449,7 +1499,7 @@ sub print_quotas { if ($context eq 'requestcourses') { $datatable .= ''; foreach my $item (@usertools) { - $datatable .= ''.$defcell{$item}.''; + $datatable .= ''.$defcell{$item}.''; } $datatable .= ''; } @@ -1552,7 +1602,7 @@ sub print_quotas { if ($context eq 'requestcourses') { $datatable .= ''; foreach my $item (@usertools) { - $datatable .= ''.$advcell{$item}.''; + $datatable .= ''.$advcell{$item}.''; } $datatable .= ''; } @@ -1811,7 +1861,7 @@ sub print_autocreate { my ($numdc,$dctable) = &active_dc_picker($dom,$curr_dc); if ($numdc > 1) { $datatable .= ''. - &mt('XML files processed as: (choose Dom. Coord.)'). + &mt('XML files processed as: (choose Dom. Coord.)'). ''.$dctable.''. ''; $$rowtotal ++ ; @@ -2016,6 +2066,100 @@ sub print_contacts { return $datatable; } +sub print_helpsettings { + + my ($position,$dom,$confname,$settings,$rowtotal) = @_; + my ($css_class,$datatable); + + my $switchserver = &check_switchserver($dom,$confname); + + my $itemcount = 1; + + if ($position eq 'top') { + + my (%checkedon,%checkedoff,%choices,%defaultchecked,@toggles); + + %choices = + &Apache::lonlocal::texthash ( + submitbugs => 'Display "Submit a bug" link?', + ); + + %defaultchecked = ('submitbugs' => 'on'); + + @toggles = ('submitbugs',); + + foreach my $item (@toggles) { + if ($defaultchecked{$item} eq 'on') { + $checkedon{$item} = ' checked="checked" '; + $checkedoff{$item} = ' '; + } elsif ($defaultchecked{$item} eq 'off') { + $checkedoff{$item} = ' checked="checked" '; + $checkedon{$item} = ' '; + } + } + + if (ref($settings) eq 'HASH') { + foreach my $item (@toggles) { + if ($settings->{$item} eq '1') { + $checkedon{$item} = ' checked="checked" '; + $checkedoff{$item} = ' '; + } elsif ($settings->{$item} eq '0') { + $checkedoff{$item} = ' checked="checked" '; + $checkedon{$item} = ' '; + } + } + } + + foreach my $item (@toggles) { + $css_class = $itemcount%2 ? ' class="LC_odd_row"' : ''; + $datatable .= + ' + '.$choices{$item}.' +   + +   + '. + ''. + ''; + $itemcount ++; + } + + } else { + + $css_class = $itemcount%2 ? ' class="LC_odd_row"' : ''; + + $datatable .= ''; + + if (ref($settings) eq 'HASH') { + if ($settings->{'loginhelpurl'} ne '') { + my($directory, $filename) = $settings->{'loginhelpurl'} =~ m/(.*\/)(.*)$/; + $datatable .= ''; + $datatable .= '' + } else { + $datatable .= ''; + $datatable .= ' '; + } + } else { + $datatable .= ' '; + $datatable .= ' '; + } + + $datatable .= ''; + if ($switchserver) { + $datatable .= &mt('Upload to library server: [_1]',$switchserver); + } else { + $datatable .= &mt('Upload Custom Login Page Help File:'); + $datatable .=''; + } + $datatable .= ''; + + } + + return $datatable; + +} + + sub radiobutton_prefs { my ($settings,$toggles,$defaultchecked,$choices,$itemcount) = @_; return unless ((ref($toggles) eq 'ARRAY') && (ref($defaultchecked) eq 'HASH') && @@ -2122,7 +2266,7 @@ sub courserequest_titles { sub courserequest_conditions { my %conditions = &Apache::lonlocal::texthash ( - approval => '(Processing of request subject to approval by Domain Coordinator).', + approval => '(Processing of request subject to approval by Domain Coordinator).', validate => '(Processing of request subject to instittutional validation).', ); return %conditions; @@ -2718,8 +2862,8 @@ sub print_coursecategories { categorizecomm => 'Assign a category to a community', ); my %level = &Apache::lonlocal::texthash ( - dom => 'Set in Domain', - crs => 'Set in Course', + dom => 'Set in Domain', + crs => 'Set in Course', comm => 'Set in Community', ); $datatable = ''. @@ -2778,9 +2922,9 @@ sub print_coursecategories { communities => &mt('Communities'), ); - if ((!grep(/^instcode$/,@{$cats[0]})) || + if ((!grep(/^instcode$/,@{$cats[0]})) || ($cathash->{'instcode::0'} eq '') || - (!grep(/^communities$/,@{$cats[0]})) || + (!grep(/^communities$/,@{$cats[0]})) || ($cathash->{'communities::0'} eq '')) { $maxnum ++; } @@ -2874,7 +3018,7 @@ sub print_coursecategories { ''. $default_names{$default}.''; if ($default eq 'instcode') { - $datatable .= '
(' + $datatable .= '
(' .&mt('with institutional codes').')'; } $datatable .= '' @@ -2973,7 +3117,7 @@ sub coursecategories_javascript { } my $instcode_reserved = &mt('The name: "instcode" is a reserved category'); my $communities_reserved = &mt('The name: "communities" is a reserved category'); - my $choose_again = '\\n'.&mt('Please use a different name for the new top level category'); + my $choose_again = '\\n'.&mt('Please use a different name for the new top level category'); $output = <<"ENDSCRIPT";