--- loncom/interface/domainprefs.pm 2007/09/19 17:36:47 1.29 +++ loncom/interface/domainprefs.pm 2007/09/26 12:42:32 1.30 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.29 2007/09/19 17:36:47 raeburn Exp $ +# $Id: domainprefs.pm,v 1.30 2007/09/26 12:42:32 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -61,7 +61,7 @@ sub handler { &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['phase']); - my $phase = "display"; + my $phase = 'pickactions'; if ( exists($env{'form.phase'}) ) { $phase = $env{'form.phase'}; } @@ -69,91 +69,168 @@ sub handler { &Apache::lonnet::get_dom('configuration',['login','rolecolors', 'quotas','autoenroll','autoupdate','directorysrch', 'usercreation','contacts'],$dom); - my @prefs = ( - { text => 'Default color schemes', - help => 'Default_Color_Schemes', - action => 'rolecolors', - header => [{col1 => 'Student Settings', - col2 => '',}, - {col1 => 'Coordinator Settings', - col2 => '',}, - {col1 => 'Author Settings', - col2 => '',}, - {col1 => 'Administrator Settings', - col2 => '',}], - }, - { text => 'Log-in page options', - help => 'Domain_Log-in_Page', - action => 'login', - header => [{col1 => 'Item', - col2 => '',}], - }, - { text => 'Default quotas for user portfolios', - help => 'Default_User_Quota', - action => 'quotas', - header => [{col1 => 'User type', - col2 => 'Default quota'}], - }, - { text => 'Auto-enrollment settings', - help => 'Domain_Auto_Enrollment', - action => 'autoenroll', - header => [{col1 => 'Configuration setting', - col2 => 'Value(s)'}], - }, - { text => 'Auto-update settings', - help => 'Domain_Auto_Update', - action => 'autoupdate', - header => [{col1 => 'Setting', - col2 => 'Value',}, - {col1 => 'User Population', - col2 => 'Updataeable user data'}], - }, - { text => 'Institutional directory searches', - help => 'Domain_Directory_Search', - action => 'directorysrch', - header => [{col1 => 'Setting', - col2 => 'Value',}], - }, - { text => 'Contact Information', - help => 'Domain_Contact_Information', - action => 'contacts', - header => [{col1 => 'Setting', - col2 => 'Value',}], - }, - - { text => 'User creation', - help => 'Domain_User_Creation', - action => 'usercreation', - header => [{col1 => 'Setting', - col2 => 'Value',}, - {col1 => 'Context', - col2 => 'Assignable Authentication Types'}], - }, + my @prefs_order = ('rolecolors','login','quotas','autoenroll', + 'autoupdate','directorysrch','contacts', + 'usercreation'); + my %prefs = ( + 'rolecolors' => + { text => 'Default color schemes', + help => 'Default_Color_Schemes', + header => [{col1 => 'Student Settings', + col2 => '',}, + {col1 => 'Coordinator Settings', + col2 => '',}, + {col1 => 'Author Settings', + col2 => '',}, + {col1 => 'Administrator Settings', + col2 => '',}], + }, + 'login' => + { text => 'Log-in page options', + help => 'Domain_Log-in_Page', + header => [{col1 => 'Item', + col2 => '',}], + }, + 'quotas' => + { text => 'Default quotas for user portfolios', + help => 'Default_User_Quota', + header => [{col1 => 'User type', + col2 => 'Default quota'}], + }, + 'autoenroll' => + { text => 'Auto-enrollment settings', + help => 'Domain_Auto_Enrollment', + header => [{col1 => 'Configuration setting', + col2 => 'Value(s)'}], + }, + 'autoupdate' => + { text => 'Auto-update settings', + help => 'Domain_Auto_Update', + header => [{col1 => 'Setting', + col2 => 'Value',}, + {col1 => 'User Population', + col2 => 'Updataeable user data'}], + }, + 'directorysrch' => + { text => 'Institutional directory searches', + help => 'Domain_Directory_Search', + header => [{col1 => 'Setting', + col2 => 'Value',}], + }, + 'contacts' => + { text => 'Contact Information', + help => 'Domain_Contact_Information', + header => [{col1 => 'Setting', + col2 => 'Value',}], + }, + + 'usercreation' => + { text => 'User creation', + help => 'Domain_User_Creation', + header => [{col1 => 'Setting', + col2 => 'Value',}, + {col1 => 'Context', + col2 => 'Assignable Authentication Types'}], + }, ); my @roles = ('student','coordinator','author','admin'); + my @actions = &Apache::loncommon::get_env_multiple('form.actions'); &Apache::lonhtmlcommon::add_breadcrumb - ({href=>"javascript:changePage(document.$phase,'display')", - text=>"Domain Configuration"}); + ({href=>"javascript:changePage(document.$phase,'pickactions')", + text=>"Pick functionality"}); my $confname = $dom.'-domainconfig'; if ($phase eq 'process') { &Apache::lonhtmlcommon::add_breadcrumb - ({href=>"javascript:changePage(document.$phase,'$phase')", + ({href=>"javascript:changePage(document.$phase,'display')", + text=>"Domain Configuration"}, + {href=>"javascript:changePage(document.$phase,'$phase')", text=>"Updated"}); &print_header($r,$phase); - foreach my $item (@prefs) { - $r->print('

'.&mt($item->{'text'}).'

'. - &process_changes($r,$dom,$confname, - $item->{'action'},\@roles,%domconfig)); + foreach my $item (@prefs_order) { + if (grep(/^\Q$item\E$/,@actions)) { + $r->print('

'.&mt($prefs{$item}{'text'}).'

'. + &process_changes($r,$dom,$confname,$item, + \@roles,%domconfig)); + } } $r->print('

'); - &print_footer($r,$phase,'display','Back to actions menu'); + &print_footer($r,$phase,'display','Back to configuration display', + \@actions); $r->print('

'); + } elsif ($phase eq 'display') { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"javascript:changePage(document.$phase,'display')", + text=>"Domain Configuration"}); + &print_header($r,$phase); + if (@actions > 0) { + my $rowsum = 0; + my (%output,%rowtotal,@items); + my $halfway = @actions/2; + foreach my $item (@prefs_order) { + if (grep(/^\Q$item\E$/,@actions)) { + push(@items,$item); + ($output{$item},$rowtotal{$item}) = + &print_config_box($r,$dom,$confname,$phase, + $item,$prefs{$item}, + $domconfig{$item}); + $rowsum += $rowtotal{$item}; + } + } + my $colend; + my $halfway = $rowsum/2; + my $aggregate = 0; + my $sumleft = 0; + my $sumright = 0; + my $crossover; + for (my $i=0; $i<@items; $i++) { + $aggregate += $rowtotal{$items[$i]}; + if ($aggregate > $halfway) { + $crossover = $i; + last; + } + } + for (my $i=0; $i<$crossover; $i++) { + $sumleft += $rowtotal{$items[$i]}; + } + for (my $i=$crossover+1; $i<@items; $i++) { + $sumright += $rowtotal{$items[$i]}; + } + if ((@items > 1) && ($env{'form.numcols'} == 2)) { + my $sumdiff = $sumright - $sumleft; + if ($sumdiff > 0) { + $colend = $crossover + 1; + } else { + $colend = $crossover; + } + } else { + $colend = @items; + } + $r->print('

'); + for (my $i=0; $i<$colend; $i++) { + $r->print($output{$items[$i]}); + } + $r->print(''); + if ($colend < @items) { + for (my $i=$colend; $i<@items; $i++) { + $r->print($output{$items[$i]}); + } + } + $r->print('

'); + $r->print(&print_footer($r,$phase,'process','Save',\@actions)); + } else { + $r->print(''. + ''."\n". + ''.&mt('No settings chosen'). + ''); + } + $r->print(''); + $r->print(&Apache::loncommon::end_page()); } else { if ($phase eq '') { - $phase = 'display'; + $phase = 'pickactions'; } - my %helphash; - my $numprefs = @prefs; + my %helphash; &print_header($r,$phase); if (keys(%domconfig) == 0) { my $primarylibserv = &Apache::lonnet::domain($dom,'primary'); @@ -180,25 +257,33 @@ sub handler { &mt("Thereafter, (with a Domain Coordinator role selected in the domain) you will be able to update settings when logged in to any server in the LON-CAPA network.").'
'. &mt("However, you will still need to switch to the domain's primary library server to upload new images or logos.").'

'); if ($switch_server) { - $r->print($switch_server.' '.&mt('to primary library server for domain: [_1]',$dom)); + $r->print($switch_server.' '.&mt('to primary library server for domain: [_1]',$dom)); } return OK; } } } - $r->print(' - -
'); - foreach my $item (@prefs) { - if ($item->{'action'} eq 'login') { - $r->print(' '); - } - &print_config_box($r,$dom,$confname,$phase,$item->{'action'}, - $item,$domconfig{$item->{'action'}}); - } - $r->print(' -
'); - &print_footer($r,$phase,'process','Save changes'); + $r->print('

'.&mt('Functionality to display/modify').'

'); + $r->print(''."\n".'

  '. + '

'); + foreach my $item (@prefs_order) { + $r->print('

'); + } + $r->print('

'.&mt('Display options').'

'."\n". + '

'.&mt('Display using: ')."\n". + '  '. + ''. + &mt('two columns').'

'); + $r->print(&print_footer($r,$phase,'display','Go')); + $r->print(''); + $r->print(&Apache::loncommon::end_page()); } return OK; } @@ -229,34 +314,38 @@ sub process_changes { sub print_config_box { my ($r,$dom,$confname,$phase,$action,$item,$settings) = @_; - $r->print(' - + my $rowtotal = 0; + my $output = + '
- '); + '; # # FIXME - put the help link back in when the help files exist # # '); + $rowtotal ++; if (($action eq 'autoupdate') || ($action eq 'rolecolors') || ($action eq 'usercreation')) { my $colspan = ($action eq 'rolecolors')?' colspan="2"':''; - $r->print(' + $output .= ' @@ -266,13 +355,14 @@ sub print_config_box { - '); + '; + $rowtotal ++; if ($action eq 'autoupdate') { - $r->print(&print_autoupdate('bottom',$dom,$settings)); + $output .= &print_autoupdate('bottom',$dom,$settings,\$rowtotal); } elsif ($action eq 'usercreation') { - $r->print(&print_usercreation('bottom',$dom,$settings)); + $output .= &print_usercreation('bottom',$dom,$settings,\$rowtotal); } else { - $r->print(&print_rolecolors($phase,'coordinator',$dom,$confname,$settings).' + $output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).'
'.&mt($item->{text}).' 
'.&mt($item->{text}). + ' 
'.&mt($item->{text}).' '. # &Apache::loncommon::help_open_topic($item->{'help'}).'
- '); + '; + $rowtotal ++; if ($action eq 'autoupdate') { - $r->print(&print_autoupdate('top',$dom,$settings)); + $output .= &print_autoupdate('top',$dom,$settings,\$rowtotal); } elsif ($action eq 'usercreation') { - $r->print(&print_usercreation('top',$dom,$settings)); + $output .= &print_usercreation('top',$dom,$settings,\$rowtotal); } else { - $r->print(&print_rolecolors($phase,'student',$dom,$confname,$settings)); + $output .= &print_rolecolors($phase,'student',$dom,$confname,$settings,\$rowtotal); } - $r->print(' + $output .= '
'.$item->{'header'}->[0]->{'col1'}.' '.$item->{'header'}->[0]->{'col2'}.'
'.$item->{'header'}->[1]->{'col1'}.' '.$item->{'header'}->[1]->{'col2'}.'
@@ -283,7 +373,7 @@ sub print_config_box { '.$item->{'header'}->[2]->{'col1'}.' '.$item->{'header'}->[2]->{'col2'}.' '. - &print_rolecolors($phase,'author',$dom,$confname,$settings).' + &print_rolecolors($phase,'author',$dom,$confname,$settings,\$rowtotal).' @@ -294,58 +384,99 @@ sub print_config_box { '.$item->{'header'}->[3]->{'col1'}.' '.$item->{'header'}->[3]->{'col2'}.' '. - &print_rolecolors($phase,'admin',$dom,$confname,$settings)); + &print_rolecolors($phase,'admin',$dom,$confname,$settings,\$rowtotal); + $rowtotal += 2; } } else { - $r->print(' + $output .= ' - '); + '; if (($action eq 'login') || ($action eq 'directorysrch')) { - $r->print(' - '); + $output .= ' + '; } else { - $r->print(' - '); + $output .= ' + '; } - $r->print(' + $output .= ' - '); + '; + $rowtotal ++; if ($action eq 'login') { - $r->print(&print_login($dom,$confname,$phase,$settings)); + $output .= &print_login($dom,$confname,$phase,$settings,\$rowtotal); } elsif ($action eq 'quotas') { - $r->print(&print_quotas($dom,$settings)); + $output .= &print_quotas($dom,$settings,\$rowtotal); } elsif ($action eq 'autoenroll') { - $r->print(&print_autoenroll($dom,$settings)); + $output .= &print_autoenroll($dom,$settings,\$rowtotal); } elsif ($action eq 'directorysrch') { - $r->print(&print_directorysrch($dom,$settings)); + $output .= &print_directorysrch($dom,$settings,\$rowtotal); } elsif ($action eq 'contacts') { - $r->print(&print_contacts($dom,$settings)); + $output .= &print_contacts($dom,$settings,\$rowtotal); } } - $r->print(' + $output .= '
'.$item->{'header'}->[0]->{'col1'}.''.$item->{'header'}->[0]->{'col1'}.''.$item->{'header'}->[0]->{'col1'}.''.$item->{'header'}->[0]->{'col1'}.''.$item->{'header'}->[0]->{'col2'}.'
-
'); - return; +
'; + return ($output,$rowtotal); } sub print_header { my ($r,$phase) = @_; + my $alert = &mt('You must select at least one functionality type to display.'); my $js = ' '; + my $additem; + if ($phase eq 'pickactions') { + my %loaditems = ( + 'onload' => "javascript:;getDimensions(document.$phase.width,document.$phase.height);setDisplayColumns();setFormElements(document.pickactions);", + ); + $additem = {'add_entries' => \%loaditems,}; + } else { + my %loaditems = ( + 'onload' => "javascript:getDimensions(document.$phase.width,document.$phase.height)", + ); + $additem = {'add_entries' => \%loaditems,}; + } $r->print(&Apache::loncommon::start_page('View/Modify Domain Settings', - $js)); + $js,$additem)); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Domain Settings')); $r->print('
@@ -360,23 +491,42 @@ function changePage(formname,newphase) { } sub print_footer { - my ($r,$phase,$newphase,$button_text) = @_; + my ($r,$phase,$newphase,$button_text,$actions) = @_; $button_text = &mt($button_text); - $r->print(''); + $r->print(''. + ''. + ''); + if (($phase eq 'display') || ($phase eq 'process')) { + if (ref($actions) eq 'ARRAY') { + foreach my $item (@{$actions}) { + $r->print('')."\n"; + } + } + $r->print(''); + } my $dest='"javascript:changePage(document.'.$phase.','."'$newphase'".')"'; if ($phase eq 'process') { - $r->print(''.$button_text.''); + $r->print('

'.$button_text.'

'); } else { - $r->print(''); + my $onclick; + if ($phase eq 'display') { + $onclick = '"javascript:changePage(document.'.$phase.','."'$newphase'".')"'; + } else { + $onclick = '"javascript:changePage(document.'.$phase.','."'$newphase'".')"'; + } + $r->print('

'); + } + if ($phase eq 'process') { + $r->print('
'.&Apache::loncommon::end_page()); } - $r->print(''); - $r->print('
'.&Apache::loncommon::end_page()); return; } sub print_login { - my ($dom,$confname,$phase,$settings) = @_; + my ($dom,$confname,$phase,$settings,$rowtotal) = @_; my %choices = &login_choices(); my ($catalogon,$catalogoff,$adminmailon,$adminmailoff); $catalogon = ' checked="checked" '; @@ -477,7 +627,7 @@ sub print_login { ''; $itemcount ++; - $datatable .= &display_color_options($dom,$confname,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text); + $datatable .= &display_color_options($dom,$confname,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text,$rowtotal); $datatable .= ''; return $datatable; } @@ -504,7 +654,7 @@ sub login_choices { } sub print_rolecolors { - my ($phase,$role,$dom,$confname,$settings) = @_; + my ($phase,$role,$dom,$confname,$settings,$rowtotal) = @_; my %choices = &color_font_choices(); my @bgs = ('pgbg','tabbg','sidebg'); my @links = ('link','alink','vlink'); @@ -570,19 +720,19 @@ sub print_rolecolors { } } my $itemcount = 1; - my $datatable = &display_color_options($dom,$confname,$phase,$role,$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text); + my $datatable = &display_color_options($dom,$confname,$phase,$role,$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text,$rowtotal); $datatable .= ''; return $datatable; } sub display_color_options { my ($dom,$confname,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs, - $images,$bgs,$links,$alt_text) = @_; + $images,$bgs,$links,$alt_text,$rowtotal) = @_; my $css_class = $itemcount%2?' class="LC_odd_row"':''; my $datatable = ''. ''.$choices->{'font'}.''; if (!$is_custom->{'font'}) { - $datatable .= ''.&mt('Default in use:').' '.$defaults->{'font'}.''; + $datatable .= ''.&mt('Default in use:').' '.$defaults->{'font'}.''; } else { $datatable .= ' '; } @@ -590,6 +740,8 @@ sub display_color_options { $datatable .= ''. ' '.$fontlink. + '    '. ''; my $switchserver = &check_switchserver($dom,$confname); foreach my $img (@{$images}) { @@ -685,7 +837,7 @@ sub display_color_options { my $bgs_def; foreach my $item (@{$bgs}) { if (!$is_custom->{$item}) { - $bgs_def .= ''.$choices->{$item}.'
'.$defaults->{'bgs'}{$item}.''; + $bgs_def .= ''.$choices->{$item}.'    
'.$defaults->{'bgs'}{$item}.''; } } if ($bgs_def) { @@ -699,10 +851,10 @@ sub display_color_options { my $link = &color_pick($phase,$role,$item,$choices->{$item},$designs->{'bgs'}{$item}); $datatable .= ''.$link; if ($designs->{'bgs'}{$item}) { - $datatable .= ' '; + $datatable .= '    '; } $datatable .= '
'; + '" onblur = "javascript:document.display.css_'.$role.'_'.$item.'.style.background-color = document.display.'.$role.'_'.$item.'.value;"/>'; } $datatable .= ''; $itemcount ++; @@ -712,7 +864,7 @@ sub display_color_options { my $links_def; foreach my $item (@{$links}) { if (!$is_custom->{$item}) { - $links_def .= ''.$choices->{$item}.'
'.$defaults->{'links'}{$item}.''; + $links_def .= ''.$choices->{$item}.'
'.$defaults->{'links'}{$item}.''; } } if ($links_def) { @@ -723,17 +875,16 @@ sub display_color_options { $datatable .= ''. ''; foreach my $item (@{$links}) { - $datatable .= ''; } + $$rowtotal += $itemcount; return $datatable; } @@ -773,7 +924,7 @@ ENDCOL } sub print_quotas { - my ($dom,$settings) = @_; + my ($dom,$settings,$rowtotal) = @_; my $datatable; my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); my $typecount = 0; @@ -805,11 +956,12 @@ sub print_quotas { ''; + $$rowtotal += $typecount; return $datatable; } sub print_autoenroll { - my ($dom,$settings) = @_; + my ($dom,$settings,$rowtotal) = @_; my $autorun = &Apache::lonnet::auto_run(undef,$dom), my ($defdom,$runon,$runoff); if (ref($settings) eq 'HASH') { @@ -858,11 +1010,12 @@ sub print_autoenroll { $settings->{'sender_uname'}. '" size="10" />  '.&mt('domain'). ': '.$domform.''; + $$rowtotal += 2; return $datatable; } sub print_autoupdate { - my ($position,$dom,$settings) = @_; + my ($position,$dom,$settings,$rowtotal) = @_; my $datatable; if ($position eq 'top') { my $updateon = ' '; @@ -898,6 +1051,7 @@ sub print_autoupdate { ''. ''; + $$rowtotal += 2; } else { my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); my @fields = ('lastname','firstname','middlename','gen', @@ -916,18 +1070,20 @@ sub print_autoupdate { $datatable = &usertype_update_row($settings,$usertypes,\%fieldtitles, \@fields,$types,\$numrows); + $$rowtotal += @{$types}; } } $datatable .= &usertype_update_row($settings,{'default' => $othertitle}, \%fieldtitles,\@fields,['default'], \$numrows); + $$rowtotal ++; } return $datatable; } sub print_directorysrch { - my ($dom,$settings) = @_; + my ($dom,$settings,$rowtotal) = @_; my $srchon = ' '; my $srchoff = ' checked="checked" '; my ($exacton,$containson,$beginson); @@ -969,20 +1125,21 @@ sub print_directorysrch { my $numinrow = 4; my $cansrchrow = 0; my $datatable=''. - ''. + ''. ''. ''. - ''. + ''. ''. ''; + $$rowtotal += 2; if (ref($usertypes) eq 'HASH') { if (keys(%{$usertypes}) > 0) { $datatable .= &users_cansearch_row($settings,$types,$usertypes,$dom, @@ -991,12 +1148,13 @@ sub print_directorysrch { } } if ($cansrchrow) { + $$rowtotal ++; $datatable .= ''; } else { $datatable .= ''; } - $datatable .= '
'; - my $link = &color_pick($phase,$role,$item,$choices->{$item},$designs->{'links'}{$item}); + $datatable .= ''."\n". + &color_pick($phase,$role,$item,$choices->{$item}, + $designs->{'links'}{$item}); if ($designs->{'links'}{$item}) { - $datatable.=''. - $link.''; - } else { - $datatable .= $link; + $datatable.='    '; } $datatable .= '
'. ' Mb
'.&mt('Directory search available?').''.&mt('Directory search available?').' '. '
'.&mt('Other domains can search?').''.&mt('Other domains can search?').' '. '
'.&mt('Supported search methods'). - ''; + $datatable .= ''; + $$rowtotal ++; if ($cansrchrow) { $datatable .= ''; } else { $datatable .= ''; } - $datatable .= ''. + $datatable .= ''. ''; + $$rowtotal ++; return $datatable; } sub print_contacts { - my ($dom,$settings) = @_; + my ($dom,$settings,$rowtotal) = @_; my $datatable; my @contacts = ('adminemail','supportemail'); my (%checked,%to,%otheremails); @@ -1076,9 +1236,9 @@ sub print_contacts { } else { $css_class = ' class="LC_odd_row" '; } - $datatable .= ''. - ''. - ''; $rownum ++; @@ -1090,7 +1250,8 @@ sub print_contacts { $css_class = ' class="LC_odd_row" '; } $datatable .= ''. - ''. + ''. ''."\n"; $rownum ++; } + $$rowtotal += $rownum; return $datatable; } @@ -1125,9 +1287,8 @@ sub contact_titles { } sub print_usercreation { - my ($position,$dom,$settings) = @_; + my ($position,$dom,$settings,$rowtotal) = @_; my $numinrow = 4; - my $rowcount = 0; my ($rules,$ruleorder) = &Apache::lonnet::inst_userrules($dom); my $datatable; my %lt = &Apache::lonlocal::texthash ( @@ -1145,8 +1306,8 @@ sub print_usercreation { } } $datatable = ''. - ''. - '
'.&mt('Supported search methods'). + ''; foreach my $title (@{$titleorder}) { if (defined($searchtitles->{$title})) { my $check = ' '; @@ -1013,12 +1171,13 @@ sub print_directorysrch { } } $datatable .= '
'.&mt('Search latitude').''.&mt('Search latitude').''. '
'.$titles->{$item}.''. + $datatable .= ''. + ''.$titles->{$item}. + ''. '
'.$titles->{$type}.': '. + $titles->{$type}.': '. ''; foreach my $item (@contacts) { @@ -1106,6 +1267,7 @@ sub print_contacts { '
'.$lt{'nondc'}.''; + ''; - $rowcount ++; + $$rowtotal ++; if (ref($rules) eq 'HASH') { if (keys(%{$rules}) > 0) { $datatable .= &username_formats_row($settings,$rules, $ruleorder,$numinrow); - $rowcount ++; + $$rowtotal ++; } } } else { @@ -1190,7 +1351,7 @@ sub print_usercreation { } else { $css_class = ' class="LC_odd_row" '; } - $datatable .= ''. + $datatable .= ''. ''; $rownum ++; } + $$rowtotal += $rownum; } return $datatable; } @@ -1210,8 +1372,10 @@ sub print_usercreation { sub username_formats_row { my ($settings,$rules,$ruleorder,$numinrow) = @_; my $output = ''. - '
'.$lt{'nondc'}. + ''; foreach my $item ('author','course') { $datatable .= ''; } $datatable .= '
'.$title{$item}. ''. ''; @@ -1203,6 +1364,7 @@ sub print_usercreation { $datatable .= '
'.&mt('Format rules to check for new usernames: '). - ''; + ''. + '
'. + &mt('Format rules to check for new usernames: '). + ''; my $rem; if (ref($ruleorder) eq 'ARRAY') { for (my $i=0; $i<@{$ruleorder}; $i++) { @@ -2009,6 +2173,18 @@ sub check_switchserver { return $switchserver; } +sub javascript_set_colnums { + return < 1100) { + document.pickactions.numcols[1].checked = true; + } else { + document.pickactions.numcols[0].checked = true; + } +} +END +} + sub modify_quotas { my ($dom,%domconfig) = @_; my ($resulttext,%changes);