Diff for /loncom/interface/domainprefs.pm between versions 1.39 and 1.42

version 1.39, 2008/01/04 10:17:13 version 1.42, 2008/02/15 17:02:31
Line 247  sub handler { Line 247  sub handler {
             my @ids=&Apache::lonnet::current_machine_ids();              my @ids=&Apache::lonnet::current_machine_ids();
             if (!grep(/^\Q$primarylibserv\E$/,@ids)) {              if (!grep(/^\Q$primarylibserv\E$/,@ids)) {
                 my %designhash = &Apache::loncommon::get_domainconf($dom);                  my %designhash = &Apache::loncommon::get_domainconf($dom);
                 my @loginimages = ('img','logo','domlogo');                  my @loginimages = ('img','logo','domlogo','login');
                 my $custom_img_count = 0;                  my $custom_img_count = 0;
                 foreach my $img (@loginimages) {                  foreach my $img (@loginimages) {
                     if ($designhash{$dom.'.login.'.$img} ne '') {                      if ($designhash{$dom.'.login.'.$img} ne '') {
Line 568  sub print_footer { Line 568  sub print_footer {
 sub print_login {  sub print_login {
     my ($dom,$confname,$phase,$settings,$rowtotal) = @_;      my ($dom,$confname,$phase,$settings,$rowtotal) = @_;
     my %choices = &login_choices();      my %choices = &login_choices();
     my ($catalogon,$catalogoff,$adminmailon,$adminmailoff);      my %defaultchecked = ( 
     $catalogon = ' checked="checked" ';                      'coursecatalog' => 'on',
     $adminmailoff = ' checked="checked" ';                      'adminmail'     => 'off',
     my @images = ('img','logo','domlogo');                    );
       my @toggles = ('coursecatalog','adminmail');
       my (%checkedon,%checkedoff);
       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} = ' ';
           }
       }
       my $loginheader = 'image';
       my @images = ('img','logo','domlogo','login');
       my @logintext = ('textcol','bgcol');
     my @bgs = ('pgbg','mainbg','sidebg');      my @bgs = ('pgbg','mainbg','sidebg');
     my @links = ('link','alink','vlink');      my @links = ('link','alink','vlink');
     my %designhash = &Apache::loncommon::get_domainconf($dom);      my %designhash = &Apache::loncommon::get_domainconf($dom);
Line 586  sub print_login { Line 600  sub print_login {
     foreach my $item (@bgs) {      foreach my $item (@bgs) {
         $defaults{'bgs'}{$item} = $defaultdesign{'login.'.$item};          $defaults{'bgs'}{$item} = $defaultdesign{'login.'.$item};
     }      }
       foreach my $item (@logintext) {
           $defaults{'logintext'}{$item} = $defaultdesign{'login.'.$item};
       }
     foreach my $item (@links) {      foreach my $item (@links) {
         $defaults{'links'}{$item} = $defaultdesign{'login.'.$item};          $defaults{'links'}{$item} = $defaultdesign{'login.'.$item};
     }      }
     if (ref($settings) eq 'HASH') {      if (ref($settings) eq 'HASH') {
         if ($settings->{'coursecatalog'} eq '0') {          foreach my $item (@toggles) {
             $catalogoff = $catalogon;              if ($settings->{$item} eq '1') {
             $catalogon = ' ';                  $checkedon{$item} =  ' checked="checked" ';
         }                  $checkedoff{$item} = ' ';
         if ($settings->{'adminmail'} eq '1') {              } elsif ($settings->{$item} eq '0') {
             $adminmailon = $adminmailoff;                  $checkedoff{$item} =  ' checked="checked" ';
             $adminmailoff = ' ';                  $checkedon{$item} = ' ';
               }
         }          }
         foreach my $item (@images) {          foreach my $item (@images) {
             if ($settings->{$item} ne '') {              if ($settings->{$item} ne '') {
Line 604  sub print_login { Line 622  sub print_login {
                 $is_custom{$item} = 1;                  $is_custom{$item} = 1;
             }              }
         }          }
           foreach my $item (@logintext) {
               if ($settings->{$item} ne '') {
                   $designs{'logintext'}{$item} = $settings->{$item};
                   $is_custom{$item} = 1;
               }
           }
           if ($settings->{'loginheader'} ne '') {
               $loginheader = $settings->{'loginheader'};
           }
         if ($settings->{'font'} ne '') {          if ($settings->{'font'} ne '') {
             $designs{'font'} = $settings->{'font'};              $designs{'font'} = $settings->{'font'};
             $is_custom{'font'} = 1;              $is_custom{'font'} = 1;
Line 646  sub print_login { Line 673  sub print_login {
     }      }
     my %alt_text = &Apache::lonlocal::texthash  ( img => 'Log-in banner',      my %alt_text = &Apache::lonlocal::texthash  ( img => 'Log-in banner',
                                                   logo => 'Institution Logo',                                                    logo => 'Institution Logo',
                                                   domlogo => 'Domain Logo');                                                    domlogo => 'Domain Logo',
                                                     login => 'Login box');
     my $itemcount = 1;      my $itemcount = 1;
     my $css_class = $itemcount%2?' class="LC_odd_row"':'';      my ($css_class,$datatable);
     my $datatable =       foreach my $item (@toggles) {
         '<tr'.$css_class.'><td colspan="2">'.$choices{'coursecatalog'}.          $css_class = $itemcount%2?' class="LC_odd_row"':'';
         '</td><td>'.          $datatable .=  
         '<span class="LC_nobreak"><label><input type="radio" name="coursecatalog"'.              '<tr'.$css_class.'><td colspan="2">'.$choices{$item}.
         $catalogon.' value="1" />'.&mt('Yes').'</label>&nbsp;'.              '</td><td>'.
         '<label><input type="radio" name="coursecatalog"'.              '<span class="LC_nobreak"><label><input type="radio" name="'.
         $catalogoff.'value="0" />'.&mt('No').'</label></span></td>'.              $item.'"'.$checkedon{$item}.' value="1" />'.&mt('Yes').
         '</tr>';              '</label>&nbsp;<label><input type="radio" name="'.$item.'"'.
     $itemcount ++;              $checkedoff{$item}.' value="0" />'.&mt('No').'</label></span></td>'.
     $css_class = $itemcount%2?' class="LC_odd_row"':'';              '</tr>';
     $datatable .= '<tr'.$css_class.'>'.          $itemcount ++;
         '<td colspan="2">'.$choices{'adminmail'}.'</td>'.      }
         '<td><span class="LC_nobreak">'.      $datatable .= &display_color_options($dom,$confname,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text,$rowtotal,\@logintext,$loginheader);
         '<label><input type="radio" name="adminmail"'.  
         $adminmailon.' value="1" />'.&mt('Yes').'</label>&nbsp;'.  
         '<label><input type="radio" name="adminmail"'.  
         $adminmailoff.'value="0" />'.&mt('No').'</label></span></td></tr>';  
     $itemcount ++;  
     $datatable .= &display_color_options($dom,$confname,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text,$rowtotal);  
     $datatable .= '</tr></table></td></tr>';      $datatable .= '</tr></table></td></tr>';
     return $datatable;      return $datatable;
 }  }
Line 680  sub login_choices { Line 702  sub login_choices {
             img => "Header",              img => "Header",
             logo => "Main Logo",              logo => "Main Logo",
             domlogo => "Domain Logo",              domlogo => "Domain Logo",
               login => "Log-in Header", 
               textcol => "Text color",
               bgcol   => "Box color",
             bgs => "Background colors",              bgs => "Background colors",
             links => "Link colors",              links => "Link colors",
             font => "Font color",              font => "Font color",
Line 767  sub print_rolecolors { Line 792  sub print_rolecolors {
   
 sub display_color_options {  sub display_color_options {
     my ($dom,$confname,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs,      my ($dom,$confname,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs,
         $images,$bgs,$links,$alt_text,$rowtotal) = @_;          $images,$bgs,$links,$alt_text,$rowtotal,$logintext,$loginheader) = @_;
     my $css_class = $itemcount%2?' class="LC_odd_row"':'';      my $css_class = $itemcount%2?' class="LC_odd_row"':'';
     my $datatable = '<tr'.$css_class.'>'.      my $datatable = '<tr'.$css_class.'>'.
         '<td>'.$choices->{'font'}.'</td>';          '<td>'.$choices->{'font'}.'</td>';
Line 789  sub display_color_options { Line 814  sub display_color_options {
         $css_class = $itemcount%2?' class="LC_odd_row"':'';          $css_class = $itemcount%2?' class="LC_odd_row"':'';
         $datatable .= '<tr'.$css_class.'>'.          $datatable .= '<tr'.$css_class.'>'.
                       '<td>'.$choices->{$img}.'</td>';                        '<td>'.$choices->{$img}.'</td>';
         my ($imgfile, $img_import);          my ($imgfile,$img_import,$login_hdr_pick,$logincolors);
         if ($designs->{$img} ne '') {          if ($designs->{$img} ne '') {
             $imgfile = $designs->{$img};              $imgfile = $designs->{$img};
     $img_import = ($imgfile =~ m{^/adm/});      $img_import = ($imgfile =~ m{^/adm/});
         } else {          } else {
             $imgfile = $defaults->{$img};              $imgfile = $defaults->{$img};
         }          }
           if ($img eq 'login') {
               $login_hdr_pick = &login_header_options($img,$role,$defaults,$is_custom,$choices,
                                                       $loginheader);
               $logincolors =
                   &login_text_colors($img,$role,$logintext,$phase,$choices,$designs);
           }
         if ($imgfile) {          if ($imgfile) {
             my ($showfile,$fullsize);              my ($showfile,$fullsize);
             if ($imgfile =~ m-^(/res/\Q$dom\E/\Q$confname\E/\Q$img\E)/([^/]+)$-) {              if ($imgfile =~ m-^(/res/\Q$dom\E/\Q$confname\E/\Q$img\E)/([^/]+)$-) {
Line 836  sub display_color_options { Line 867  sub display_color_options {
                 }                  }
             }              }
             if ($showfile) {              if ($showfile) {
                 $showfile = &Apache::loncommon::lonhttpdurl($showfile);                  if ($showfile =~ m{^/(adm|res)/}) {
                 $fullsize =  &Apache::loncommon::lonhttpdurl($imgfile);                      if ($showfile =~ m{^/res/}) {
                 $datatable.= '<td>';                          my $local_showfile =
                 if (!$is_custom->{$img}) {                              &Apache::lonnet::filelocation('',$showfile);
                     $datatable .= &mt('Default in use:').'<br />';                          &Apache::lonnet::repcopy($local_showfile);
                 }                      }
  if ($img_import) {                      $showfile = &Apache::loncommon::lonhttpdurl($showfile);
     $datatable.= '<input type="hidden" name="'.$role.'_import_'.$img.'" value="'.$imgfile.'" />';                  }
  }                  if ($imgfile) {
                 $datatable.= '<a href="'.$fullsize.'" target="_blank"><img src="'.                      if ($imgfile  =~ m{^/(adm|res)/}) {
                              $showfile.'" alt="'.$alt_text->{$img}.                          if ($imgfile =~ m{^/res/}) {
                              '" border="0" /></a></td>';                              my $local_imgfile =
                 if ($is_custom->{$img}) {                                  &Apache::lonnet::filelocation('',$imgfile);
                     $datatable.='<td><span class="LC_nobreak"><label><input type="checkbox" name="'.                              &Apache::lonnet::repcopy($local_imgfile);
                                 $role.'_del_'.$img.'" value="1" />'.&mt('Delete?').                          }
                                 '</label>&nbsp;'.&mt('Replace:').'</span><br />';                          $fullsize = &Apache::loncommon::lonhttpdurl($imgfile);
                 } else {                      } else {
                     $datatable.='<td valign="bottom">'.&mt('Upload:').'<br />';                          $fullsize = $imgfile;
                       }
                 }                  }
                   $datatable .= '<td>';
                   if ($img eq 'login') {
                       $datatable .= $login_hdr_pick;    
                   }
                   $datatable .= &image_changes($is_custom->{$img},$alt_text->{$img},$img_import,
                                                $showfile,$fullsize,$role,$img,$imgfile,$logincolors);
             } else {              } else {
                 $datatable .= '<td colspan="2" class="LC_right_item"><br />'.                  $datatable .= '<td colspan="2" class="LC_right_item"><br />'.
                               &mt('Upload:');                                &mt('Upload:');
Line 894  sub display_color_options { Line 932  sub display_color_options {
             $datatable .= '&nbsp;<span id="css_'.$role.'_'.$item.'" style="background-color: '.$designs->{'bgs'}{$item}.';">&nbsp;&nbsp;&nbsp;</span>';              $datatable .= '&nbsp;<span id="css_'.$role.'_'.$item.'" style="background-color: '.$designs->{'bgs'}{$item}.';">&nbsp;&nbsp;&nbsp;</span>';
         }          }
         $datatable .= '<br /><input type="text" size="8" name="'.$role.'_'.$item.'" value="'.$designs->{'bgs'}{$item}.          $datatable .= '<br /><input type="text" size="8" name="'.$role.'_'.$item.'" value="'.$designs->{'bgs'}{$item}.
                       '" onblur = "javascript:document.display.css_'.$role.'_'.$item.'.style.background-color = document.display.'.$role.'_'.$item.'.value;"/></td>';                        '" onblur = "javascript:colchg_span('."'css_".$role.'_'.$item."'".',this);" /></td>';
     }      }
     $datatable .= '</tr></table></td></tr>';      $datatable .= '</tr></table></td></tr>';
     $itemcount ++;      $itemcount ++;
Line 928  sub display_color_options { Line 966  sub display_color_options {
     return $datatable;      return $datatable;
 }  }
   
   sub login_header_options  {
       my ($img,$role,$defaults,$is_custom,$choices,$loginheader) = @_;
       my $image_checked = ' checked="checked" ';
       my $text_checked = ' ';
       if ($loginheader eq 'text') {
           $image_checked = ' ';
           $text_checked = ' checked="checked" ';
       }
       my $output = '<span class="LC_nobreak"><label><input type="radio" name="'.
                 'loginheader" value="image" '.$image_checked.'/>'.
                 &mt('use image').'</label>&nbsp;&nbsp;&nbsp;'.
                 '<label><input type="radio" name="loginheader" value="text"'.
                 $text_checked.'/>'.&mt('use text').'</label><br />'."\n";
       if ((!$is_custom->{'textcol'}) || (!$is_custom->{'bgcol'})) {
           $output .= &mt('Text default(s)').':<br />';
           if (!$is_custom->{'textcol'}) {
               $output .= $choices->{'textcol'}.':&nbsp;'.$defaults->{'logintext'}{'textcol'}.
                          '&nbsp;&nbsp;&nbsp;';
           }
           if (!$is_custom->{'bgcol'}) {
               $output .= $choices->{'bgcol'}.':&nbsp;'.
                          '<span id="css_'.$role.'_font" style="background-color: '.
                          $defaults->{'logintext'}{'bgcol'}.';">&nbsp;&nbsp;&nbsp;</span>';
           }
           $output .= '<br />';
       }
       $output .='<br />';
       return $output;
   }
   
   sub login_text_colors {
       my ($img,$role,$logintext,$phase,$choices,$designs) = @_;
       my $color_menu = '<table border="0"><tr>';
       foreach my $item (@{$logintext}) {
           my $link = &color_pick($phase,$role,$item,$choices->{$item},$designs->{'logintext'}{$item});
           $color_menu .= '<td align="center">'.$link;
           if ($designs->{'logintext'}{$item}) {
               $color_menu .= '&nbsp;<span id="css_'.$role.'_'.$item.'" style="background-color: '.$designs->{'logintext'}{$item}.';">&nbsp;&nbsp;&nbsp;</span>';
           }
           $color_menu .= '<br /><input type="text" size="8" name="'.$role.'_'.$item.'" value="'.
                          $designs->{'logintext'}{$item}.'" onblur = "javascript:colchg_span('."'css_".$role.'_'.$item."'".',this);" /></td>'.
                          '<td>&nbsp;</td>';
       }
       $color_menu .= '</tr></table><br />';
       return $color_menu;
   }
   
   sub image_changes {
       my ($is_custom,$alt_text,$img_import,$showfile,$fullsize,$role,$img,$imgfile,$logincolors) = @_;
       my $output;
       if (!$is_custom) {
           if ($img eq 'login') {
               $output .= &mt('Default image:').'<br />';
           } else {
               $output .= &mt('Default in use:').'<br />';
           }
       }
       if ($img_import) {
           $output .= '<input type="hidden" name="'.$role.'_import_'.$img.'" value="'.$imgfile.'" />';
       }
       $output .= '<a href="'.$fullsize.'" target="_blank"><img src="'.
                  $showfile.'" alt="'.$alt_text.'" border="0" /></a></td>';
       if ($is_custom) {
           $output .= '<td>'.$logincolors.'<span class="LC_nobreak"><label>'.
                      '<input type="checkbox" name="'.
                      $role.'_del_'.$img.'" value="1" />'.&mt('Delete?').
                      '</label>&nbsp;'.&mt('Replace:').'</span><br />';
       } else {
           $output .= '<td valign="bottom">'.$logincolors.&mt('Upload:').'<br />';
       }
       return $output;
   }
   
 sub color_pick {  sub color_pick {
     my ($phase,$role,$item,$desc,$curcol) = @_;      my ($phase,$role,$item,$desc,$curcol) = @_;
     my $link = '<a href="javascript:pjump('."'color_custom','".$desc.      my $link = '<a href="javascript:pjump('."'color_custom','".$desc.
Line 959  sub color_pick_js { Line 1070  sub color_pick_js {
             document.parmform.pres_marker.value='';              document.parmform.pres_marker.value='';
         }          }
     }      }
   
       function get_id (span_id) {
    if (document.getElementById) {
               return document.getElementById(span_id);
           }
    if (document.all) {
               return document.all[span_id];
           } 
    return false;
       }
   
       function colchg_span (span_id_str,new_color_item) {
    var span_ref = get_id(span_id_str);
    if (span_ref.style) { span_ref = span_ref.style; }
    span_ref.background = new_color_item.value;
    span_ref.backgroundColor = new_color_item.value;
    span_ref.bgColor = new_color_item.value;
       }
   
 ENDCOL  ENDCOL
     return $output;      return $output;
 }  }
Line 1777  sub modify_login { Line 1907  sub modify_login {
     my ($r,$dom,$confname,%domconfig) = @_;      my ($r,$dom,$confname,%domconfig) = @_;
     my ($resulttext,$errors,$colchgtext,%changes,%colchanges);      my ($resulttext,$errors,$colchgtext,%changes,%colchanges);
     my %title = ( coursecatalog => 'Display course catalog',      my %title = ( coursecatalog => 'Display course catalog',
                   adminmail => 'Display administrator E-mail address');                    adminmail => 'Display administrator E-mail address',
                     loginheader => 'Log-in box header');
     my @offon = ('off','on');      my @offon = ('off','on');
     my %loginhash;      my %loginhash;
     ($errors,%colchanges) = &modify_colors($r,$dom,$confname,['login'],      ($errors,%colchanges) = &modify_colors($r,$dom,$confname,['login'],
                                            \%domconfig,\%loginhash);                                             \%domconfig,\%loginhash);
     $loginhash{login}{coursecatalog} = $env{'form.coursecatalog'};      my @toggles = ('coursecatalog','adminmail');
     $loginhash{login}{adminmail} = $env{'form.adminmail'};      foreach my $item (@toggles) {
           $loginhash{login}{$item} = $env{'form.'.$item};
       }
       $loginhash{login}{loginheader} = $env{'form.loginheader'};
     if (ref($colchanges{'login'}) eq 'HASH') {        if (ref($colchanges{'login'}) eq 'HASH') {  
         $colchgtext = &display_colorchgs($dom,\%colchanges,['login'],          $colchgtext = &display_colorchgs($dom,\%colchanges,['login'],
                                          \%loginhash);                                           \%loginhash);
Line 1791  sub modify_login { Line 1925  sub modify_login {
     my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash,      my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash,
                                              $dom);                                               $dom);
     if ($putresult eq 'ok') {      if ($putresult eq 'ok') {
         if (($domconfig{'login'}{'coursecatalog'} eq '0') &&          my @toggles = ('coursecatalog','adminmail');
             ($env{'form.coursecatalog'} eq '1')) {          my %defaultchecked = (
             $changes{'coursecatalog'} = 1;                      'coursecatalog' => 'on',
         } elsif (($domconfig{'login'}{'coursecatalog'} eq '' ||                      'adminmail'     => 'off',
                  $domconfig{'login'}{'coursecatalog'} eq '1') &&          );
                  ($env{'form.coursecatalog'} eq '0')) {          foreach my $item (@toggles) {
             $changes{'coursecatalog'} = 1;              if ($defaultchecked{$item} eq 'on') { 
         }                  if (($domconfig{'login'}{$item} eq '0') &&
         if (($domconfig{'login'}{'adminmail'} eq '1') &&                      ($env{'form.'.$item} eq '1')) {
                 ($env{'form.adminmail'} eq '0')) {                      $changes{$item} = 1;
             $changes{'adminmail'} = 1;                  } elsif (($domconfig{'login'}{$item} eq '' ||
         } elsif (($domconfig{'login'}{'adminmail'} eq '' ||                            $domconfig{'login'}{$item} eq '1') &&
                  $domconfig{'login'}{'adminmail'} eq '0') &&                           ($env{'form.'.$item} eq '0')) {
                  ($env{'form.adminmail'} eq '1')) {                      $changes{$item} = 1;
             $changes{'adminmail'} = 1;                  }
               } elsif ($defaultchecked{$item} eq 'off') {
                   if (($domconfig{'login'}{$item} eq '1') &&
                       ($env{'form.'.$item} eq '0')) {
                       $changes{$item} = 1;
                   } elsif (($domconfig{'login'}{$item} eq '' ||
                             $domconfig{'login'}{$item} eq '0') &&
                            ($env{'form.'.$item} eq '1')) {
                       $changes{$item} = 1;
                   }
               }
           }
           if (($domconfig{'login'}{'loginheader'} eq 'text') && 
               ($env{'form.loginheader'} eq 'image')) {
               $changes{'loginheader'} = 1;
           } elsif (($domconfig{'login'}{'loginheader'} eq '' ||
                     $domconfig{'login'}{'loginheader'} eq 'image') &&
                    ($env{'form.loginheader'} eq 'text')) {
               $changes{'loginheader'} = 1;
         }          }
         if (keys(%changes) > 0 || $colchgtext) {          if (keys(%changes) > 0 || $colchgtext) {
               &Apache::loncommon::devalidate_domconfig_cache($dom);
             $resulttext = &mt('Changes made:').'<ul>';              $resulttext = &mt('Changes made:').'<ul>';
             foreach my $item (sort(keys(%changes))) {              foreach my $item (sort(keys(%changes))) {
                 $resulttext .= '<li>'.&mt("$title{$item} set to $offon[$env{'form.'.$item}]").'</li>';                  if ($item eq 'loginheader') {
                       $resulttext .= '<li>'.&mt("$title{$item} set to $env{'form.loginheader'}").'</li>';
                   } else {
                       $resulttext .= '<li>'.&mt("$title{$item} set to $offon[$env{'form.'.$item}]").'</li>';
                   }
             }              }
             $resulttext .= $colchgtext.'</ul>';              $resulttext .= $colchgtext.'</ul>';
         } else {          } else {
Line 1854  sub modify_rolecolors { Line 2011  sub modify_rolecolors {
                                              $dom);                                               $dom);
     if ($putresult eq 'ok') {      if ($putresult eq 'ok') {
         if (keys(%changes) > 0) {          if (keys(%changes) > 0) {
               &Apache::loncommon::devalidate_domconfig_cache($dom);
             $resulttext = &display_colorchgs($dom,\%changes,$roles,              $resulttext = &display_colorchgs($dom,\%changes,$roles,
                                              $rolehash{'rolecolors'});                                               $rolehash{'rolecolors'});
         } else {          } else {
Line 1875  sub modify_colors { Line 2033  sub modify_colors {
     my (%changes,%choices);      my (%changes,%choices);
     my @bgs = ('pgbg','mainbg','sidebg');      my @bgs = ('pgbg','mainbg','sidebg');
     my @links = ('link','alink','vlink');      my @links = ('link','alink','vlink');
       my @logintext;
     my @images;      my @images;
     my $servadm = $r->dir_config('lonAdmEMail');      my $servadm = $r->dir_config('lonAdmEMail');
     my $errors;      my $errors;
     foreach my $role (@{$roles}) {      foreach my $role (@{$roles}) {
         if ($role eq 'login') {          if ($role eq 'login') {
             %choices = &login_choices();              %choices = &login_choices();
               @logintext = ('textcol','bgcol');
         } else {          } else {
             %choices = &color_font_choices();              %choices = &color_font_choices();
         }          }
         if ($role eq 'login') {          if ($role eq 'login') {
             @images = ('img','logo','domlogo');              @images = ('img','logo','domlogo','login');
         } else {          } else {
             @images = ('img');              @images = ('img');
         }          }
         $confhash->{$role}{'font'} = $env{'form.'.$role.'_font'};          $confhash->{$role}{'font'} = $env{'form.'.$role.'_font'};
         foreach my $item (@bgs,@links) {          foreach my $item (@bgs,@links,@logintext) {
             $confhash->{$role}{$item} = $env{'form.'.$role.'_'.$item};              $confhash->{$role}{$item} = $env{'form.'.$role.'_'.$item};
         }          }
         my ($configuserok,$author_ok,$switchserver,%currroles);          my ($configuserok,$author_ok,$switchserver,%currroles);
Line 1904  sub modify_colors { Line 2064  sub modify_colors {
             }              }
         }          }
         my ($width,$height) = &thumb_dimensions();          my ($width,$height) = &thumb_dimensions();
           if (ref($domconfig->{$role}) ne 'HASH') {
               $domconfig->{$role} = {};
           }
         foreach my $img (@images) {          foreach my $img (@images) {
     if ( ! $env{'form.'.$role.'_'.$img.'.filename'}       if ( ! $env{'form.'.$role.'_'.$img.'.filename'} 
  && !defined($domconfig->{$role}{$img})   && !defined($domconfig->{$role}{$img})
Line 2011  sub modify_colors { Line 2174  sub modify_colors {
                         }                          }
                     }                      }
                 }                  }
                   foreach my $item (@logintext) {
                       if ($domconfig->{$role}{$item} ne '') {
                           if ($confhash->{$role}{$item} ne $domconfig->{$role}{$item}) {
                               $changes{$role}{'logintext'}{$item} = 1;
                           }
                       } else {
                           if ($confhash->{$role}{$item}) {
                               $changes{$role}{'logintext'}{$item} = 1;
                           }
                       }
                   }
             } else {              } else {
                 &default_change_checker($role,\@images,\@links,\@bgs,                  &default_change_checker($role,\@images,\@links,\@bgs,
                                         $confhash,\%changes);                                           \@logintext,$confhash,\%changes); 
             }              }
         } else {          } else {
             &default_change_checker($role,\@images,\@links,\@bgs,              &default_change_checker($role,\@images,\@links,\@bgs,
                                     $confhash,\%changes);                                       \@logintext,$confhash,\%changes); 
         }          }
     }      }
     return ($errors,%changes);      return ($errors,%changes);
 }  }
   
 sub default_change_checker {  sub default_change_checker {
     my ($role,$images,$links,$bgs,$confhash,$changes) = @_;      my ($role,$images,$links,$bgs,$logintext,$confhash,$changes) = @_;
     foreach my $item (@{$links}) {      foreach my $item (@{$links}) {
         if ($confhash->{$role}{$item}) {          if ($confhash->{$role}{$item}) {
             $changes->{$role}{'links'}{$item} = 1;              $changes->{$role}{'links'}{$item} = 1;
Line 2035  sub default_change_checker { Line 2209  sub default_change_checker {
             $changes->{$role}{'bgs'}{$item} = 1;              $changes->{$role}{'bgs'}{$item} = 1;
         }          }
     }      }
       foreach my $item (@{$logintext}) {
           if ($confhash->{$role}{$item}) {
               $changes->{$role}{'logintext'}{$item} = 1;
           }
       }
     foreach my $img (@{$images}) {      foreach my $img (@{$images}) {
         if ($env{'form.'.$role.'_del_'.$img}) {          if ($env{'form.'.$role.'_del_'.$img}) {
             $confhash->{$role}{$img} = '';              $confhash->{$role}{$img} = '';
Line 2049  sub default_change_checker { Line 2228  sub default_change_checker {
 sub display_colorchgs {  sub display_colorchgs {
     my ($dom,$changes,$roles,$confhash) = @_;      my ($dom,$changes,$roles,$confhash) = @_;
     my (%choices,$resulttext);      my (%choices,$resulttext);
     &Apache::loncommon::devalidate_domconfig_cache($dom);  
     if (!grep(/^login$/,@{$roles})) {      if (!grep(/^login$/,@{$roles})) {
         $resulttext = &mt('Changes made:').'<br />';          $resulttext = &mt('Changes made:').'<br />';
     }      }
Line 2145  sub check_configuser { Line 2323  sub check_configuser {
 sub check_authorstatus {  sub check_authorstatus {
     my ($dom,$confname,%currroles) = @_;      my ($dom,$confname,%currroles) = @_;
     my $author_ok;      my $author_ok;
     if (!$currroles{$confname.':'.$dom.':au'}) {      if (!$currroles{':'.$dom.':au'}) {
         my $start = time;          my $start = time;
         my $end = 0;          my $end = 0;
         $author_ok =           $author_ok = 

Removed from v.1.39  
changed lines
  Added in v.1.42


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>