[LON-CAPA-cvs] cvs: loncom /interface domainprefs.pm

raeburn lon-capa-cvs@mail.lon-capa.org
Thu, 01 Mar 2007 18:03:18 -0000


This is a MIME encoded message

--raeburn1172772198
Content-Type: text/plain

raeburn		Thu Mar  1 13:03:18 2007 EDT

  Modified files:              
    /loncom/interface	domainprefs.pm 
  Log:
  Modify display to show all domain configuration settings on a single page (styled similarly to What's New? Page).  Help files needed for help links.
  
  
--raeburn1172772198
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20070301130318.txt"

Index: loncom/interface/domainprefs.pm
diff -u loncom/interface/domainprefs.pm:1.2 loncom/interface/domainprefs.pm:1.3
--- loncom/interface/domainprefs.pm:1.2	Thu Mar  1 12:54:13 2007
+++ loncom/interface/domainprefs.pm	Thu Mar  1 13:03:18 2007
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to set domain-wide configuration settings
 #
-# $Id: domainprefs.pm,v 1.2 2007/03/01 17:54:13 albertel Exp $
+# $Id: domainprefs.pm,v 1.3 2007/03/01 18:03:18 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -59,211 +59,464 @@
     &Apache::lonhtmlcommon::clear_breadcrumbs();
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['phase']);
-    my $phase = $env{'form.phase'};
-    if ($phase eq '' || $phase eq 'start') {
+    my $phase = "display";
+    if ( exists($env{'form.phase'}) ) {
+        $phase = $env{'form.phase'};
+    }
+    my %domconfig =
+      &Apache::lonnet::get_dom('configuration',['login','quotas',
+                               'autoenroll','autoupdate'],$dom);
+
+    my @prefs = (
+      { text => 'Log-in page options',
+        help => 'Domain_Log-in_Page',
+        action => 'login',
+        header => [{col1 => 'Item',
+                    col2 => 'Selection',}],
+        },
+      { 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'}],
+      },
+    );
+    &Apache::lonhtmlcommon::add_breadcrumb
+    ({href=>"javascript:changePage(document.$phase,'display')",
+      text=>"Domain Configuration"});
+    if ($phase eq 'process') {
         &Apache::lonhtmlcommon::add_breadcrumb
-        ({href=>"javascript:changePage(document.$phase,'start')",
-          text=>"Choose an action"});
-        &print_main_menu($r,$dom,$domdesc);
+          ({href=>"javascript:changePage(document.$phase,'$phase')",
+            text=>"Updated"});
+        &print_header($r,$phase);
+        foreach my $item (@prefs) {
+            $r->print('<h3>'.&mt($item->{'text'}).'</h3>'.
+                   &process_changes($dom,$item->{'action'},%domconfig));
+        }
+        $r->print('<p>');
+        &print_footer($r,$phase,'display','Back to actions menu');
+        $r->print('</p>');
     } else {
-        &Apache::lonhtmlcommon::add_breadcrumb
-        ({href=>"javascript:changePage(document.$phase,'start')",
-          text=>"Choose an action"});
-        if ($phase eq 'login') {
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'$phase')",
-                text=>"Configure Log-in page"});
-            &print_login($r,$phase,$dom)
-        } elsif ($phase eq 'configlogin') {
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'login')",
-                text=>"Configure Log-in page"});
-            &Apache::lonhtmlcommon::add_breadcrumb
-                ({href=>"javascript:changePage(document.$phase,'$phase')",
-                  text=>"Result"});
-            &modify_login($r,$phase,$dom,$domdesc);
-        } elsif ($phase eq 'quotas') {
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'$phase')",
-                text=>"Default user quotas"});
-            &print_quotas($r,$phase,$dom);
-        } elsif ($phase eq 'configquotas') {
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'quotas')",
-                text=>"Default user quotas"});
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'$phase')",
-                text=>"Result"});
-            &modify_quotas($r,$phase,$dom,$domdesc);
-        } elsif ($phase eq 'autoenroll') {
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'$phase')",
-                text=>"Configure Auto-enrollment"});
-            &print_autoenroll($r,$phase,$dom);
-        } elsif ($phase eq 'configenroll') {
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'autoenroll')",
-                text=>"Configure Auto-enrollment"});
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'$phase')",
-                text=>"Result"});
-            &modify_autoenroll($r,$phase,$dom,$domdesc);
-        } elsif ($phase eq 'autoupdate') {
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'$phase')",
-                text=>"Configure Auto-update"});
-            &print_autoupdate($r,$phase,$dom);
-        } elsif ($phase eq 'configupdate') {
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'quotas')",
-                text=>"Change settings"});
-            &Apache::lonhtmlcommon::add_breadcrumb
-              ({href=>"javascript:changePage(document.$phase,'$phase')",
-                text=>"Result"});
-            &modify_autoupdate($r,$phase,$dom,$domdesc);
-        }
-    }
-    &print_footer($r);
-}
-
-sub print_main_menu {
-    my ($r,$dom,$domdesc) = @_;
-    my @menu =
-        (
-          { text => 'Log-in page options',
-            help => 'Domain_Log-in_Page',
-            phase => 'login',
-            },
-          { text => 'Default quotas for user portfolios',
-            help => 'Default_User_Quota',
-            phase => 'quotas',
-            },
-          { text => 'Auto-enrollment settings',
-            help => 'Domain_Auto_Enrollment',
-            phase => 'autoenroll',
-            },
-          { text => 'Auto-update settings',
-            help => 'Domain_Auto_Update',
-            phase => 'autoupdate',
-          },
-        );
-    my $menu_html = '';
-    foreach my $menu_item (@menu) {
-        $menu_html.='<p>';
-        $menu_html.='<font size="+1">';
-        if (exists($menu_item->{'url'})) {
-            $menu_html.=qq{<a href="$menu_item->{'url'}">};
-        } else {
-            $menu_html.=
-                qq{<a href="/adm/domainprefs?phase=$menu_item->{'phase'}">};
-        }
-        $menu_html.= &mt($menu_item->{'text'}).'</a></font>';
-        if (exists($menu_item->{'help'})) {
-            $menu_html.=
-                &Apache::loncommon::help_open_topic($menu_item->{'help'});
+        if ($phase eq '') {
+            $phase = 'display';
         }
-        $menu_html.='</p>'.$/;
-    }
-    &print_header($r);
-    $r->print($menu_html);
+        my %helphash;   
+        my $numprefs = @prefs;
+        &print_header($r,$phase);
+        $r->print('<table border="0" width="100%" cellpadding="2" cellspacing="4"><tr><td align="left" valign="top" width="45%">');
+        foreach my $item (@prefs) {
+            if ($item->{'action'} eq 'autoupdate') {
+                $r->print('</td><td width="6%">&nbsp;</td><td align="left" valign="top" width="47%">');
+            }
+            &print_config_box($r,$dom,$item->{'action'},$item,
+                              $domconfig{$item->{'action'}});
+        }
+        $r->print('
+           </table>
+          </td>
+         </tr>
+        </table>
+      </td>
+    </tr>
+   </table>');
+        &print_footer($r,$phase,'process','Store changes');
+    }
+    return OK;
+}
+
+sub process_changes {
+    my ($dom,$action,%domconfig) = @_;
+    my $output;
+    if ($action eq 'login') {
+        $output = &modify_login($dom,%domconfig);
+    } elsif ($action eq 'quotas') {
+        $output = &modify_quotas($dom,%domconfig);
+    } elsif ($action eq 'autoenroll') {
+        $output = &modify_autoenroll($dom,%domconfig);
+    } elsif ($action eq 'autoupdate') {
+        $output = &modify_autoupdate($dom,%domconfig);
+    }
+    return $output;
+}
+
+sub print_config_box {
+    my ($r,$dom,$action,$item,$settings) = @_;
+    $r->print('
+         <table class="LC_nested_outer">
+          <tr>
+           <th>'.&mt($item->{text}).'&nbsp;'.
+           &Apache::loncommon::help_open_topic($item->{'help'}).'</th>
+          </tr>');
+    if ($action eq 'autoupdate') {
+        $r->print('
+          <tr>
+           <td>
+            <table class="LC_nested">
+             <tr class="LC_info_row">
+              <td class="LC_left_item">'.$item->{'header'}->[0]->{'col1'}.'</td>
+              <td class="LC_right_item">'.$item->{'header'}->[0]->{'col2'}.'</td>
+             </tr>'.
+        &print_autoupdate('top',$dom,$settings).'
+           </table>
+          </td>
+         </tr>
+         <tr>
+           <td>
+            <table class="LC_nested">
+             <tr class="LC_info_row">
+              <td class="LC_left_item">'.$item->{'header'}->[1]->{'col1'}.'</td>
+              <td class="LC_right_item">'.$item->{'header'}->[1]->{'col2'}.'</td>
+             </tr>'.
+        &print_autoupdate('bottom',$dom,$settings));
+    } else {
+        $r->print('
+          <tr>
+           <td>
+            <table class="LC_nested">
+             <tr class="LC_info_row">
+              <td class="LC_left_item">'.$item->{'header'}->[0]->{'col1'}.'</td>
+              <td class="LC_right_item">'.$item->{'header'}->[0]->{'col2'}.'</td>
+             </tr>');
+        if ($action eq 'login') {
+           $r->print(&print_login($settings));
+        } elsif ($action eq 'quotas') {
+           $r->print(&print_quotas($dom,$settings));
+        } elsif ($action eq 'autoenroll') {
+           $r->print(&print_autoenroll($dom,$settings));
+        }  
+    }
+    $r->print('
+   </table>
+  </td>
+ </tr>
+</table><br />');
     return;
 }
 
 sub print_header {
-    my ($r,$javascript_validations) = @_;
-    my $phase = "start";
-    if ( exists($env{'form.phase'}) ) {
-        $phase = $env{'form.phase'};
-    }
+    my ($r,$phase) = @_;
     my $js = qq|
 <script type="text/javascript">
 function changePage(formname,newphase) {
     formname.phase.value = newphase;
-    if (newphase == 'processparms') {
-        return;
-    }
     formname.submit();
 }
 </script>
 |;
     $r->print(&Apache::loncommon::start_page('View/Modify Domain Settings',
-                                             $js));
-    my $bread_text = "Domain Settings";
-    $r->print(&Apache::lonhtmlcommon::breadcrumbs($bread_text));
+                                           $js));
+    $r->print(&Apache::lonhtmlcommon::breadcrumbs('Domain Settings'));
+    $r->print('<form method="post" name="'.$phase.'" action="/adm/domainprefs">');
     return;
 }
 
 sub print_footer {
-    my ($r) = @_;
+    my ($r,$phase,$newphase,$button_text) = @_;
+    $button_text = &mt($button_text);
+    $r->print('<input type="hidden" name="phase" value="" />');
+    my $dest='"javascript:changePage(document.'.$phase.','."'$newphase'".')"';
+    if ($phase eq 'process') {
+        $r->print('<a href='.$dest.'>'.$button_text.'</a>');
+    } else {
+        $r->print('<input type="button" name="store" value="'.
+                  $button_text.'" onclick='.$dest.' />');
+    }
+    $r->print('</form>');
     $r->print('<br />'.&Apache::loncommon::end_page());
     return;
 }
 
-sub print_login { 
-    my ($r,$phase,$dom) = @_;
-    my %domconfig = &Apache::lonnet::get_dom('configuration',
-                                             ['login'],$dom);
+sub print_login {
+    my ($settings) = @_;
     my $catalogon = ' checked="checked" ';
     my $catalogoff;
     my $adminmailon = ' ';
     my $adminmailoff = ' checked="checked" ';
-    if (ref($domconfig{'login'}) eq 'HASH') {
-        if ($domconfig{'login'}{'coursecatalog'} eq '0') {
+    if (ref($settings) eq 'HASH') {
+        if ($settings->{'coursecatalog'} eq '0') {
             $catalogoff = $catalogon;
             $catalogon = ' ';
         }
-        if ($domconfig{'login'}{'adminmail'} eq '1') {
+        if ($settings->{'adminmail'} eq '1') {
             $adminmailon = $adminmailoff;
             $adminmailoff = ' ';
         }
     }
-    &print_header($r);
-    my $datatable=&Apache::loncommon::start_data_table().
-                  &Apache::loncommon::start_data_table_header_row().
-                  '<th>'.&mt('Item').'</th><th>'.&mt('Selection').'</th>'.
-                  &Apache::loncommon::end_data_table_header_row().
-                  &Apache::loncommon::start_data_table_row().
-                  '<td>'.&mt('Display Course Catalog link?').'</td>'.
-                  '<td><nobr><input type="radio" name="coursecatalog"'.
-                  $catalogon.' value="1" />'.&mt('Yes').'&nbsp;'.
-                  '<input type="radio" name="coursecatalog"'.
-                  $catalogoff.'value="0" />'.&mt('No').'</nobr></td>'.
-                  &Apache::loncommon::end_data_table_row().
-                  &Apache::loncommon::start_data_table_row().
-                  '<td>'.&mt("Display Administrator's E-mail Address?").'</td>'.
-                  '<td><nobr><input type="radio" name="adminmail"'.                          $adminmailon.' value="1" />'.&mt('Yes').'&nbsp;'.
-                  '<input type="radio" name="adminmail"'.
-                  $adminmailoff.'value="0" />'.&mt('No').'</nobr></td>'.
-                  &Apache::loncommon::end_data_table_row().
-                  &Apache::loncommon::start_data_table();
-    &print_form($r,$datatable,$phase,'configlogin','Change'); 
+    my %choices = 
+        &Apache::lonlocal::texthash(
+            coursecatalog => 'Display Course Catalog link?',
+            adminmail => "Display Administrator's E-mail Address?"
+        );
+    my $datatable = 
+        '<tr class="LC_odd_row"><td>'.$choices{'coursecatalog'}.
+        '</td><td class="LC_right_item">'.
+        '<nobr><input type="radio" name="coursecatalog"'.
+        $catalogon.' value="1" />'.&mt('Yes').'&nbsp;'.
+        '<input type="radio" name="coursecatalog"'.
+        $catalogoff.'value="0" />'.&mt('No').'</nobr></td>'.
+        '</tr><tr>'.
+        '<td>'.$choices{'adminmail'}.'</td>'.
+        '<td class="LC_right_item"><nobr>'.
+        '<input type="radio" name="adminmail"'.
+        $adminmailon.' value="1" />'.&mt('Yes').'&nbsp;'.
+        '<input type="radio" name="adminmail"'.
+        $adminmailoff.'value="0" />'.&mt('No').'</nobr></td>'.
+        '</tr>';
+    return $datatable;
+}
+
+sub print_quotas {
+    my ($dom,$settings) = @_;
+    my $datatable;
+    my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom);
+    my $othertitle = "All users";
+    my @types;
+    if (ref($order) eq 'ARRAY') {
+        @types = @{$order};
+    }
+    if (@types == 0) {
+        if (ref($usertypes) eq 'HASH') {
+            @types = sort(keys(%{$usertypes}));
+        }
+    }
+    my $typecount = 0;
+    my $css_class;
+    if (@types > 0) {
+        foreach my $type (@types) {
+            if (defined($usertypes->{$type})) {
+                $typecount ++;
+                $css_class = $typecount%2?' class="LC_odd_row"':'';
+                $datatable .= '<tr'.$css_class.'>'. 
+                              '<td>'.$usertypes->{$type}.'</td>'.
+                              '<td class="LC_right_item"><nobr>'.
+                              '<input type="text" name="quota_'.$type.
+                              '" value="'.$settings->{$type}.
+                              '" size="5" /> Mb</nobr></td></tr>';
+            }
+        }
+        $othertitle = "Other users";
+    }
+    my $defaultquota = '20';
+    if (ref($settings) eq 'HASH') {
+        if (defined($settings->{'default'})) {
+            $defaultquota = $settings->{'default'};
+        }
+    }
+    $typecount ++;
+    $css_class = $typecount%2?' class="LC_odd_row"':'';
+    $datatable .= '<tr'.$css_class.'>'.
+                  '<td>'.&mt($othertitle).'</td>'.
+                  '<td class="LC_right_item"><nobr>'.
+                  '<input type="text" name="default" value="'.
+                  $defaultquota.'" size="5" /> Mb</nobr></td></tr>';
+    return $datatable;
+}
+
+sub print_autoenroll {
+    my ($dom,$settings) = @_;
+    my $defdom = $dom;
+    my $autorun = &Apache::lonnet::auto_run(undef,$dom),
+    my ($runon,$runoff);
+    if (ref($settings) eq 'HASH') {
+        if (exists($settings->{'run'})) {
+            if ($settings->{'run'} eq '0') {
+                $runoff = ' checked="checked" ';
+                $runon = ' ';
+            } else {
+                $runon = ' checked="checked" ';
+                $runoff = ' ';
+            }
+        } else {
+            if ($autorun) {
+                $runon = ' checked="checked" ';
+                $runoff = ' ';
+            } else {
+                $runoff = ' checked="checked" ';
+                $runon = ' ';
+            }
+        }
+        if (exists($settings->{'sender_domain'})) {
+            $defdom = $settings->{'sender_domain'};
+        }
+    }
+    my $domform = &Apache::loncommon::select_dom_form($defdom,'sender_domain',1);
+    my $datatable='<tr class="LC_odd_row">'.
+                  '<td>'.&mt('Auto-enrollment active?').'</td>'.
+                  '<td class="LC_right_item"><nobr>'.
+                  '<input type="radio" name="autoenroll_run"'.
+                  $runon.' value="1" />'.&mt('Yes').'&nbsp;'.
+                  '<input type="radio" name="autoenroll_run"'.
+                  $runoff.'value="0" />'.&mt('No').'</nobr></td>'.
+                  '</tr><tr>'.
+                  '<td>'.&mt('Notification messages - sender').
+                  '</td><td class="LC_right_item"><nobr>'.
+                  &mt('username').':&nbsp;'.
+                  '<input type="text" name="sender_uname" value="'.
+                  $settings->{'sender_uname'}.
+                  '" size="10" />&nbsp;&nbsp;'.&mt('domain').
+                  ':&nbsp;'.$domform.'</nobr></td></tr>';
+    return $datatable;
+}
+
+sub print_autoupdate {
+    my ($position,$dom,$settings) = @_;
+    my $datatable;
+    if ($position eq 'top') {
+        my $updateon = ' ';
+        my $updateoff = ' checked="checked" ';
+        my $classlistson = ' ';
+        my $classlistsoff = ' checked="checked" ';
+        if (ref($settings) eq 'HASH') {
+            if ($settings->{'run'} eq '1') {
+                $updateon = $updateoff;
+                $updateoff = ' ';
+            }
+            if ($settings->{'classlists'} eq '1') {
+                $classlistson = $classlistsoff;
+                $classlistsoff = ' ';
+            }
+        }
+        my %title = (
+                   run => 'Auto-update active?',
+                   classlists => 'Update information in classlists?',
+                    );
+        $datatable = '<tr class="LC_odd_row">'. 
+                  '<td>'.&mt($title{'run'}).'</td>'.
+                  '<td class="LC_right_item"><nobr>'.
+                  '<input type="radio" name="autoupdate_run"'.
+                  $updateon.' value="1" />'.&mt('Yes').'&nbsp;'.
+                  '<input type="radio" name="autoupdate_run"'.
+                  $updateoff.'value="0" />'.&mt('No').'</nobr></td>'.
+                  '</tr><tr>'.
+                  '<td>'.&mt($title{'classlists'}).'</td>'.
+                  '<td class="LC_right_item"><nobr>'.
+                  '<input type="radio" name="classlists"'.
+                  $classlistson.' value="1" />'.&mt('Yes').'&nbsp;'.
+                  '<input type="radio" name="classlists"'.
+                  $classlistsoff.'value="0" />'.&mt('No').'</nobr></td>'.
+                  '</tr>';
+    } else {
+        my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom);
+        my @types;
+        if (ref($order) eq 'ARRAY') {
+            @types = @{$order};
+        }
+        if (@types == 0) {
+            if (ref($usertypes) eq 'HASH') {
+                @types = sort(keys(%{$usertypes}));
+            }
+        }
+        my $othertitle = &mt('All users');
+        if (keys(%{$usertypes}) > 0) {
+            $othertitle = &mt('Other users');
+        }
+        my @fields = ('lastname','firstname','middlename','gen','email','id');
+        my %fieldtitles = &Apache::lonlocal::texthash (
+                            id => 'Student/Employee ID',
+                            email => 'E-mail address',
+                            lastname => 'Last Name',
+                            firstname => 'First Name',
+                            middlename => 'Middle Name',
+                            gen => 'Generation',
+                      );
+        my $numrows = 0;
+        if (@types > 0) {
+            $datatable = 
+                &usertype_update_row($settings,$usertypes,\%fieldtitles,
+                                     \@fields,\@types,\$numrows);
+        }
+        $datatable .= 
+            &usertype_update_row($settings,{'default' => $othertitle},
+                                 \%fieldtitles,\@fields,['default'],
+                                 \$numrows);
+    }
+    return $datatable;
+}
+
+sub usertype_update_row {
+    my ($settings,$usertypes,$fieldtitles,$fields,$types,$rownums) = @_;
+    my $datatable;
+    my $numinrow = 4;
+    foreach my $type (@{$types}) {
+        if (defined($usertypes->{$type})) {
+            $$rownums ++;
+            my $css_class = $$rownums%2?' class="LC_odd_row"':'';
+            $datatable .= '<tr'.$css_class.'><td>'.$usertypes->{$type}.
+                          '</td><td class="LC_left_item"><table>';
+            for (my $i=0; $i<@{$fields}; $i++) {
+                my $rem = $i%($numinrow);
+                if ($rem == 0) {
+                    if ($i > 0) {
+                        $datatable .= '</tr>';
+                    }
+                    $datatable .= '<tr>';
+                }
+                my $check = ' ';
+                if (ref($settings->{'fields'}) eq 'HASH') {
+                    if (ref($settings->{'fields'}{$type}) eq 'ARRAY') {
+                        if (grep(/^\Q$fields->[$i]\E$/,@{$settings->{'fields'}{$type}})) {
+                            $check = ' checked="checked" ';
+                        }
+                    }
+                }
+
+                if ($i == @{$fields}-1) {
+                    my $colsleft = $numinrow - $rem;
+                    if ($colsleft > 1) {
+                        $datatable .= '<td colspan="'.$colsleft.'">';
+                    } else {
+                        $datatable .= '<td>';
+                    }
+                } else {
+                    $datatable .= '<td>';
+                }
+                $datatable .= '<nobr><input type="checkbox" name="updateable_'.
+                              $type.'_'.$fields->[$i].'" '.
+                              '" value="1"'.$check.'/>'.
+                              $fieldtitles->{$fields->[$i]}.'</nobr></td>';
+            }
+            $datatable .= '</tr></table></td></tr>';
+        }
+    }
+    return $datatable;
 }
 
 sub modify_login {
-    my ($r,$phase,$dom,$domdesc) = @_;
+    my ($dom,%domconfig) = @_;
     my ($resulttext,%changes);
-    my %domconfig = &Apache::lonnet::get_dom('configuration',
-                                             ['login'],$dom);
     my %title = ( coursecatalog => 'Display course catalog',
                   adminmail => 'Display administrator E-mail address');
-    my @offon = ('off','on'); 
+    my @offon = ('off','on');
     my %loginhash =  (
-                       login => { coursecatalog => $env{'form.coursecatalog'},
-                                  adminmail => $env{'form.adminmail'},
+                       login => { coursecatalog => $env{'form.coursecatalog'},                                  adminmail => $env{'form.adminmail'},
                                 }
                      );
     my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash,
                                              $dom);
     if ($putresult eq 'ok') {
-        if (($domconfig{'login'}{'coursecatalog'} eq '0') && 
+        if (($domconfig{'login'}{'coursecatalog'} eq '0') &&
             ($env{'form.coursecatalog'} eq '1')) {
             $changes{'coursecatalog'} = 1;
-        } elsif (($domconfig{'login'}{'coursecatalog'} eq '' || 
-                 $domconfig{'login'}{'coursecatalog'} eq '1') && 
+        } elsif (($domconfig{'login'}{'coursecatalog'} eq '' ||
+                 $domconfig{'login'}{'coursecatalog'} eq '1') &&
                  ($env{'form.coursecatalog'} eq '0')) {
             $changes{'coursecatalog'} = 1;
         }
-        if (($domconfig{'login'}{'adminmail'} eq '1') && 
+        if (($domconfig{'login'}{'adminmail'} eq '1') &&
                 ($env{'form.adminmail'} eq '0')) {
             $changes{'adminmail'} = 1;
         } elsif (($domconfig{'login'}{'adminmail'} eq '' ||
@@ -283,67 +536,14 @@
     } else {
         $resulttext = &mt('An error occurred: [_1]',$putresult);
     }
-    &print_header($r);
-    &print_form($r,$resulttext,$phase,'start','Back to actions menu');
-}
-
-sub print_quotas {
-    my ($r,$phase,$dom) = @_;
-    my %currquota;
-    my %domconfig = &Apache::lonnet::get_dom('configuration',
-                                             ['quotas'],$dom);
-    if (ref($domconfig{'quotas'}) eq 'HASH') {
-        foreach my $key (keys(%{$domconfig{'quotas'}})) {
-            $currquota{$key} = $domconfig{'quotas'}{$key};
-        }
-    }
-    my $datatable=&Apache::loncommon::start_data_table().
-                  &Apache::loncommon::start_data_table_header_row().
-                  '<th>'.&mt('User type').'</th><th>'.&mt('Default quota').'</th>'.
-                  &Apache::loncommon::end_data_table_header_row();
-    my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom);
-    my $othertitle = "All users";
-    my @types;
-    if (ref($order) eq 'ARRAY') {
-        @types = @{$order};
-    }
-    if (@types == 0) {
-        if (ref($usertypes) eq 'HASH') {
-            @types = sort(keys(%{$usertypes}));
-        }
-    }
-    if (@types > 0) {
-        foreach my $type (@types) {
-            if (defined($usertypes->{$type})) {
-                $datatable .= &Apache::loncommon::start_data_table_row().
-                              '<td>'.$usertypes->{$type}.'</td><td><nobr>'.
-                              '<input type="text" name="quota_'.$type.
-                              '" value="'.$currquota{$type}.
-                              '" size="5" /> Mb</nobr></td>'; 
-            }
-        }
-        $othertitle = "Other users";
-    }
-    my $defaultquota = '20';
-    if (defined($currquota{'default'})) {
-        $defaultquota = $currquota{'default'};
-    }
-    $datatable .= &Apache::loncommon::start_data_table_row().
-                  '<td>'.&mt($othertitle).'</td><td><nobr>'.
-                  '<input type="text" name="default" value="'.
-                  $defaultquota.'" size="5" /> Mb</nobr></td>'.
-                  &Apache::loncommon::end_data_table_row().
-                  &Apache::loncommon::end_data_table();
-    &print_header($r);
-    &print_form($r,$datatable,$phase,'configquotas','Change');
+    return $resulttext;
 }
 
 sub modify_quotas {
-    my ($r,$phase,$dom,$domdesc) = @_;
+    my ($dom,%domconfig) = @_;
     my ($resulttext,%changes);
-    my %domconfig = &Apache::lonnet::get_dom('configuration',
-                                             ['quotas'],$dom);
-    my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom);
+    my ($usertypes,$order) = 
+        &Apache::lonnet::retrieve_inst_usertypes($dom);
     my %formhash;
     foreach my $key (keys(%env)) {
         if ($key =~ /^form\.quota_(.+)$/) {
@@ -363,13 +563,13 @@
     }
     foreach my $key (keys(%formhash)) {
         if ($formhash{$key} ne '') {
-            if (!exists($domconfig{$key})) {
+            if (!exists($domconfig{'quotas'}{$key})) {
                 $changes{$key} = 1;
             }
         }
     }
     my %quotahash = (
-                      quotas => {%formhash}, 
+                      quotas => {%formhash},
                     );
     my $putresult = &Apache::lonnet::put_dom('configuration',\%quotahash,
                                              $dom);
@@ -386,70 +586,13 @@
     } else {
         $resulttext = &mt('An error occurred: [_1]',$putresult);
     }
-    &print_header($r);
-    &print_form($r,$resulttext,$phase,'start','Back to actions menu');
-}
-
-sub print_autoenroll {
-    my ($r,$phase,$dom) = @_;
-    my %currautoenroll;
-    my %domconfig = &Apache::lonnet::get_dom('configuration',
-                                             ['autoenroll'],$dom);
-    if (ref($domconfig{'autoenroll'}) eq 'HASH') {
-        foreach my $key (keys(%{$domconfig{'autoenroll'}})) {
-            $currautoenroll{$key} = $domconfig{'autoenroll'}{$key};
-        }
-    }
-    my $autorun = &Apache::lonnet::auto_run(undef,$dom),
-    my ($runon,$runoff);
-    if (exists($currautoenroll{'run'})) {
-        if ($currautoenroll{'run'} eq '0') {
-            $runoff = ' checked="checked" ';
-            $runon = ' ';
-        } else {
-            $runon = ' checked="checked" ';
-            $runoff = ' ';
-        }
-    } else {
-        if ($autorun) {
-            $runon = ' checked="checked" ';
-            $runoff = ' ';
-        } else {
-            $runoff = ' checked="checked" ';
-            $runon = ' ';
-        }
-    }
-    my $defdom = $dom;
-    if (exists($currautoenroll{'sender_domain'})) {
-        $defdom = $currautoenroll{'sender_domain'};
-    }
-    my $domform = &Apache::loncommon::select_dom_form($defdom,'sender_domain',1);
-    my $datatable=&Apache::loncommon::start_data_table().
-                  &Apache::loncommon::start_data_table_header_row().
-                  '<th>'.&mt('Configuration setting').'</th><th>'.&mt('Value(s)').'</th>'.
-                  &Apache::loncommon::end_data_table_header_row().
-                  &Apache::loncommon::start_data_table_row().
-                  '<td>'.&mt('Auto-enrollment active?').'</td>'.                  '<td><nobr><input type="radio" name="autoenroll_run"'.
-                  $runon.' value="1" />'.&mt('Yes').'&nbsp;'.
-                  '<input type="radio" name="autoenroll_run"'.
-                  $runoff.'value="0" />'.&mt('No').'</nobr></td>'.
-                  &Apache::loncommon::end_data_table_row().
-                  &Apache::loncommon::start_data_table_row().
-                  '<td>'.&mt('Notification messages - sender').'</td><td><nobr>'.
-                  &mt('username').':&nbsp;<input type="text" name="sender_uname" value="'.
-                  $currautoenroll{'sender_uname'}.'" size="10" />&nbsp;&nbsp;'.&mt('domain').':&nbsp;'.$domform.'</nobr></td>'.
-                  &Apache::loncommon::end_data_table_row().
-                  &Apache::loncommon::end_data_table();
-    &print_header($r);
-    &print_form($r,$datatable,$phase,'configenroll','Change');
+    return $resulttext;
 }
 
-sub modify_autoenroll { 
-    my ($r,$phase,$dom,$domdesc) = @_;
+sub modify_autoenroll {
+    my ($dom,%domconfig) = @_;
     my ($resulttext,%changes);
     my %currautoenroll;
-    my %domconfig = &Apache::lonnet::get_dom('configuration',
-                                             ['autoenroll'],$dom);
     if (ref($domconfig{'autoenroll'}) eq 'HASH') {
         foreach my $key (keys(%{$domconfig{'autoenroll'}})) {
             $currautoenroll{$key} = $domconfig{'autoenroll'}{$key};
@@ -466,8 +609,7 @@
 
                                 }
                      );
-    my $putresult = &Apache::lonnet::put_dom('configuration',\%autoenrollhash,
-                                             $dom);
+    my $putresult = &Apache::lonnet::put_dom('configuration',\%autoenrollhash,                                             $dom);
     if ($putresult eq 'ok') {
         if (exists($currautoenroll{'run'})) {
              if ($currautoenroll{'run'} ne $env{'form.autoenroll_run'}) {
@@ -494,7 +636,7 @@
         }
         if (keys(%changes) > 0) {
             $resulttext = &mt('Changes made:').'<ul>';
-            if ($changes{'run'}) { 
+            if ($changes{'run'}) {
                 $resulttext .= '<li>'.&mt("$title{'run'} set to $offon[$env{'form.autoenroll_run'}]").'</li>';
             }
             if ($changes{'sender'}) {
@@ -507,167 +649,12 @@
     } else {
         $resulttext = &mt('An error occurred: [_1]',$putresult);
     }
-    &print_header($r);
-    &print_form($r,$resulttext,$phase,'start','Back to actions menu');
-}
-
-sub print_autoupdate {
-    my ($r,$phase,$dom) = @_;
-    my (%currautoupdate,$datatable);
-    my %domconfig = &Apache::lonnet::get_dom('configuration',
-                                             ['autoupdate'],$dom);
-    if (ref($domconfig{'autoupdate'}) eq 'HASH') {
-        foreach my $key (keys(%{$domconfig{'autoupdate'}})) {
-            $currautoupdate{$key} = $domconfig{'autoupdate'}{$key};
-        }
-    }
-    my $updateon = ' ';
-    my $updateoff = ' checked="checked" ';
-    if ($currautoupdate{'run'} eq '1') {
-        $updateon = $updateoff;
-        $updateoff = ' ';
-    }
-    my $classlistson = ' ';
-    my $classlistsoff = ' checked="checked" ';
-    if ($currautoupdate{'classlists'} eq '1') {
-        $classlistson = $classlistsoff;
-        $classlistsoff = ' ';
-    }
-    my %title = (
-                   run => 'Auto-update enabled?',
-                   classlists => 'Update information in classlists?',
-                );
-    $datatable = &Apache::loncommon::start_data_table().
-                  &Apache::loncommon::start_data_table_header_row().
-                  '<th>'.&mt('Setting').'</th><th>'.&mt('Value').'</th>'.
-                  &Apache::loncommon::end_data_table_header_row().
-                  &Apache::loncommon::start_data_table_row().
-                  '<td>'.&mt($title{'run'}).'</td>'.
-                  '<td><nobr><input type="radio" name="autoupdate_run"'.
-                  $updateon.' value="1" />'.&mt('Yes').'&nbsp;'.
-                  '<input type="radio" name="autoupdate_run"'.
-                  $updateoff.'value="0" />'.&mt('No').'</nobr></td>'.
-                  &Apache::loncommon::end_data_table_row().
-                  &Apache::loncommon::start_data_table_row().
-                  '<td>'.&mt($title{'classlists'}).'</td>'.
-                  '<td><nobr><input type="radio" name="classlists"'.
-                  $classlistson.' value="1" />'.&mt('Yes').'&nbsp;'.
-                  '<input type="radio" name="classlists"'.
-                  $classlistsoff.'value="0" />'.&mt('No').'</nobr></td>'.
-                  &Apache::loncommon::end_data_table_row().
-                  &Apache::loncommon::end_data_table().'<br /><br />';
-    my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom);
-    my @types;
-    if (ref($order) eq 'ARRAY') {
-        @types = @{$order};
-    }
-    if (@types == 0) {
-        if (ref($usertypes) eq 'HASH') {
-            @types = sort(keys(%{$usertypes}));
-        }
-    }
-    my $othertitle = &mt('All users');
-    if (keys(%{$usertypes}) > 0) {
-        $othertitle = &mt('Other users');
-    }
-    my @fields = ('lastname','firstname','middlename','gen','email','id');
-    my $numinrow = 4;
-    my %fieldtitles = &Apache::lonlocal::texthash ( 
-                        id => 'Student/Employee ID',
-                        email => 'E-mail address',
-                        lastname => 'Last Name',
-                        firstname => 'First Name',
-                        middlename => 'Middle Name',
-                        gen => 'Generation',
-                      );
-    $datatable .= &Apache::loncommon::start_data_table().
-                  &Apache::loncommon::start_data_table_header_row().
-                  '<th>'.&mt('User Population').'</th><th>'.&mt('Updateable user data').'</th>'.
-                  &Apache::loncommon::end_data_table_header_row();
-    if (@types > 0) {
-        foreach my $type (@types) {
-            if (defined($usertypes->{$type})) {
-                $datatable .= &Apache::loncommon::start_data_table_row().
-                              '<td>'.$usertypes->{$type}.'</td><td><table>';
-                for (my $i=0; $i<@fields; $i++) {
-                    my $rem = $i%($numinrow);
-                    if ($rem == 0) {
-                        if ($i > 0) {
-                            $datatable .= '</tr>';
-                        }
-                        $datatable .= '<tr>';
-                    }
-                    my $check = ' ';
-                    if (ref($currautoupdate{'fields'}) eq 'HASH') {
-                        if (ref($currautoupdate{'fields'}{$type}) eq 'ARRAY') {  
-                            if (grep(/^\Q$fields[$i]\E$/,@{$currautoupdate{'fields'}{$type}})) {
-                                $check = ' checked="checked" ';
-                            }
-                        }
-                    }
-                    if ($i == @fields-1) {
-                        my $colsleft = $numinrow - $rem;
-                        if ($colsleft > 1) {
-                            $datatable .= '<td colspan="'.$colsleft.'">';
-                        } else {
-                            $datatable .= '<td>'; 
-                        }
-                    } else {
-                        $datatable .= '<td>';
-                    }
-                    $datatable .= '<nobr><input type="checkbox" name="updateable_'.
-                                  $type.'_'.$fields[$i].'" '.
-                                  '" value="1"'.$check.'/>'.
-                                  $fieldtitles{$fields[$i]}.'</nobr></td>';
-                }
-                $datatable .= '</tr></table></td>'.&Apache::loncommon::end_data_table_row();
-            }
-        }
-    }
-    $datatable .= &Apache::loncommon::start_data_table_row().
-                  '<td>'.&mt($othertitle).'</td><td><table>';
-    for (my $i=0; $i<@fields; $i++) {
-        my $rem = $i%($numinrow);
-        if ($rem == 0) {
-            if ($i > 0) {
-                $datatable .= '</tr>';
-            }
-            $datatable .= '<tr>';
-        }
-        my $check = ' ';
-        if (ref($currautoupdate{'fields'}) eq 'HASH') {
-            if (ref($currautoupdate{'fields'}{'default'}) eq 'ARRAY') {
-                if (grep(/^\Q$fields[$i]\E$/,@{$currautoupdate{'fields'}{'default'}})) {
-                    $check = ' checked="checked" ';
-                }
-            }
-        }
-        if ($i == @fields-1) {
-            my $colsleft = $numinrow - $rem;
-            if ($colsleft > 1) {
-                $datatable .= '<td colspan="'.$colsleft.'">';
-            } else {
-                $datatable .= '<td>';
-            }
-        } else {
-            $datatable .= '<td>';
-        }
-        $datatable .=  '<nobr><input type="checkbox" name="updateable_default_'.
-                       $fields[$i].'" value="1"'.$check.'/>'.
-                       $fieldtitles{$fields[$i]}.'</nobr></td>';
-    }
-    $datatable .= '</tr></table></td>'.
-                  &Apache::loncommon::end_data_table_row().
-                  &Apache::loncommon::end_data_table();
-    &print_header($r);
-    &print_form($r,$datatable,$phase,'configupdate','Change');
+    return $resulttext;
 }
 
 sub modify_autoupdate {
-    my ($r,$phase,$dom,$domdesc) = @_;
+    my ($dom,%domconfig) = @_;
     my ($resulttext,%currautoupdate,%fields,%changes);
-    my %domconfig = &Apache::lonnet::get_dom('configuration',
-                                             ['autoupdate'],$dom);
     if (ref($domconfig{'autoupdate'}) eq 'HASH') {
         foreach my $key (keys(%{$domconfig{'autoupdate'}})) {
             $currautoupdate{$key} = $domconfig{'autoupdate'}{$key};
@@ -752,7 +739,12 @@
                         foreach my $type (@{$fields{$item}}) {
                             push(@newvalues,$fieldtitles{$type});
                         }
-                        my $newvaluestr = join(', ',@newvalues);
+                        my $newvaluestr;
+                        if (@newvalues > 0) {
+                            $newvaluestr = join(', ',@newvalues);
+                        } else {
+                            $newvaluestr = &mt('none');
+                        }  
                         if ($item eq 'default') {
                             $resulttext .= '<li>'.&mt("Updates for $othertitle set to: [_1]",$newvaluestr).'</li>';
                         } else {
@@ -765,34 +757,19 @@
                         $newvalue = $offon[$env{'form.autoupdate_run'}];
                     } else {
                         $newvalue = $offon[$env{'form.'.$key}];
-                    } 
+                    }
                     $resulttext .= '<li>'.&mt("[_1] set to $newvalue",$title{$key}).'</li>';
                 }
             }
             $resulttext .= '</ul>';
         } else {
-            $resulttext = &mt('No changes made to default quotas');
+            $resulttext = &mt('No changes made to autoupdates');
         }
     } else {
         $resulttext = &mt('An error occurred: [_1]',$putresult);
     }
-    &print_header($r);
-    &print_form($r,$resulttext,$phase,'start','Back to actions menu');
-}
-
-sub print_form {
-    my ($r,$datatable,$phase,$newphase,$button_text) = @_;
-    my $button_text = &mt($button_text);
-    $r->print(<<ENDDOCUMENT);
-<form action="/adm/domainprefs" method="post" name="$phase">
-<br />
-$datatable
-<br />
-<input type="hidden" name="phase" value="" />
-<input type="button" name="store" value="$button_text" onclick="javascript:changePage(document.$phase,'$newphase')" />
-</form>
-ENDDOCUMENT
-    return;
+    return $resulttext;
 }
 
 1;
+

--raeburn1172772198--