Diff for /loncom/interface/lonparmset.pm between versions 1.290 and 1.305

version 1.290, 2006/04/15 21:12:56 version 1.305, 2006/05/15 23:40:54
Line 63  use Apache::lonhomework; Line 63  use Apache::lonhomework;
 use Apache::lonxml;  use Apache::lonxml;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnavmaps;  use Apache::lonnavmaps;
   use Apache::lonrss;
   
 # --- Caches local to lonparmset  # --- Caches local to lonparmset
   
Line 117  sub parmval { Line 118  sub parmval {
 sub parmval_by_symb {  sub parmval_by_symb {
     my ($what,$symb,$def,$uname,$udom,$csec,$cgroup,$courseopt)=@_;      my ($what,$symb,$def,$uname,$udom,$csec,$cgroup,$courseopt)=@_;
 # load caches  # load caches
   
     &cacheparmhash();      &cacheparmhash();
   
     my $useropt=&Apache::lonnet::get_userresdata($uname,$udom);      my $useropt=&Apache::lonnet::get_userresdata($uname,$udom);
Line 126  sub parmval_by_symb { Line 126  sub parmval_by_symb {
     my @outpar=();      my @outpar=();
 # ----------------------------------------------------- Cascading lookup scheme  # ----------------------------------------------------- Cascading lookup scheme
     my $map=(&Apache::lonnet::decode_symb($symb))[0];          my $map=(&Apache::lonnet::decode_symb($symb))[0];    
       $map = &Apache::lonnet::deversion($map);
   
     my $symbparm=$symb.'.'.$what;      my $symbparm=$symb.'.'.$what;
     my $mapparm=$map.'___(all).'.$what;      my $mapparm=$map.'___(all).'.$what;
Line 394  sub storeparm_by_symb { Line 395  sub storeparm_by_symb {
     return '';      return '';
 }  }
   
 {  sub log_parmset {
     my $logid;      return &Apache::lonnet::instructor_log('parameterlog',@_);
     sub log_parmset {  
  my ($storehash,$delflag,$uname,$udom)=@_;  
         my $logentry=join(',',map {  
     &Apache::lonnet::escape($_).'=>'.&Apache::lonnet::escape($$storehash{$_});  
  } keys %$storehash);  
  $logid++;  
  my $id=time().'00000'.$$.'00000'.$logid;  
  &Apache::lonnet::put('nohist_parameterlog',  
      {  
  $id.'_exe_uname' => $env{'user.name'},  
  $id.'_exe_udom'  => $env{'user.domain'},  
  $id.'_exe_time'  => time(),  
  $id.'_exe_ip'    => $ENV{'REMOTE_ADDR'},  
  $id.'_delflag'   => $delflag,  
                                  $id.'_logentry'  => $logentry,  
  $id.'_uname'     => $uname,  
  $id.'_udom'      => $udom,  
      },  
      $env{'course.'.$env{'request.course.id'}.'.domain'},  
      $env{'course.'.$env{'request.course.id'}.'.num'}  
      );  
     }  
 }  }
   
 sub storeparm_by_symb_inner {  sub storeparm_by_symb_inner {
Line 426  sub storeparm_by_symb_inner { Line 405  sub storeparm_by_symb_inner {
 # ---------------------------------------------------------- Construct prefixes  # ---------------------------------------------------------- Construct prefixes
     $spnam=~s/\_([^\_]+)$/\.$1/;      $spnam=~s/\_([^\_]+)$/\.$1/;
     my $map=(&Apache::lonnet::decode_symb($symb))[0];          my $map=(&Apache::lonnet::decode_symb($symb))[0];    
       $map = &Apache::lonnet::deversion($map);
   
     my $symbparm=$symb.'.'.$spnam;      my $symbparm=$symb.'.'.$spnam;
     my $mapparm=$map.'___(all).'.$spnam;      my $mapparm=$map.'___(all).'.$spnam;
   
Line 672  sub startpage { Line 653  sub startpage {
        &page_js(),         &page_js(),
        {'add_entries' => \%loaditems,});         {'add_entries' => \%loaditems,});
     my $breadcrumbs =       my $breadcrumbs = 
  &Apache::lonhtmlcommon::breadcrumbs(undef,   &Apache::lonhtmlcommon::breadcrumbs('Table Mode Parameter Setting');
     'Table Mode Parameter Setting');  
     $r->print(<<ENDHEAD);      $r->print(<<ENDHEAD);
 $start_page  $start_page
 $breadcrumbs  $breadcrumbs
Line 1141  sub usermenu { Line 1121  sub usermenu {
     'oi'    => "or ID",      'oi'    => "or ID",
     'ad'    => "at Domain"      'ad'    => "at Domain"
        );         );
     my %sectionhash=();  
     my $sections='';      my $sections='';
     my $numsec = &Apache::loncommon::get_sections(      my %sectionhash = &Apache::loncommon::get_sections();
                  $env{'course.'.$env{'request.course.id'}.'.domain'},  
                  $env{'course.'.$env{'request.course.id'}.'.num'},  
  \%sectionhash);  
     my $groups;      my $groups;
     my %grouphash;      my %grouphash = &Apache::loncommon::coursegroups();
     my $numgrp = &Apache::loncommon::coursegroups(  
                  \%grouphash,      if (%sectionhash) {
                  $env{'course.'.$env{'request.course.id'}.'.domain'},  
                  $env{'course.'.$env{'request.course.id'}.'.num'});  
     if ($numsec > 0) {  
         $sections=$lt{'se'}.': <select name="csec"';          $sections=$lt{'se'}.': <select name="csec"';
         if ($numsec && $numgrp && $parmlev ne 'full') {          if (%grouphash && $parmlev ne 'full') {
             $sections .= qq| onchange="group_or_section('csec')" |;              $sections .= qq| onchange="group_or_section('csec')" |;
         }          }
         $sections .= '>';          $sections .= '>';
Line 1166  sub usermenu { Line 1140  sub usermenu {
         }          }
         $sections.='</select>';          $sections.='</select>';
     }      }
     if ($numsec && $numgrp && $parmlev ne 'full') {      if (%sectionhash && %grouphash && $parmlev ne 'full') {
         $sections .= '&nbsp;or&nbsp;';          $sections .= '&nbsp;or&nbsp;';
         $sections .= qq|          $sections .= qq|
 <script type="text/javascript">  <script type="text/javascript">
Line 1192  function group_or_section(caller) { Line 1166  function group_or_section(caller) {
 </script>  </script>
 |;  |;
     }       } 
     if ($numgrp > 0) {  
       if (%grouphash) {
         $groups=$lt{'gr'}.': <select name="cgroup"';          $groups=$lt{'gr'}.': <select name="cgroup"';
         if ($numsec && $numgrp && $env{'form.action'} eq 'settable') {          if (%sectionhash && $env{'form.action'} eq 'settable') {
             $groups .= qq| onchange="group_or_section('cgroup')" |;              $groups .= qq| onchange="group_or_section('cgroup')" |;
         }          }
         $groups .= '>';          $groups .= '>';
Line 1271  sub levelmenu { Line 1246  sub levelmenu {
   
 sub sectionmenu {  sub sectionmenu {
     my ($r,$selectedsections)=@_;      my ($r,$selectedsections)=@_;
     my %sectionhash=();      my %sectionhash = &Apache::loncommon::get_sections();
     my $sections='';      return if (!%sectionhash);
     my $numsec = &Apache::loncommon::get_sections(  
                  $env{'course.'.$env{'request.course.id'}.'.domain'},      $r->print('<select name="Section" multiple="true" size="8" >');
                  $env{'course.'.$env{'request.course.id'}.'.num'},      foreach my $s ('all',sort keys %sectionhash) {
  \%sectionhash);   $r->print('    <option value="'.$s.'"');
     if ($numsec) {   foreach (@{$selectedsections}) {
  $r->print('<select name="Section" multiple="true" size="8" >');      if ($s eq $_) {
  foreach my $s ('all',sort keys %sectionhash) {   $r->print(' selected');
     $r->print('    <option value="'.$s.'"');   last;
     foreach (@{$selectedsections}) {  
  if ($s eq $_) {  
     $r->print(' selected');  
     last;  
  }  
     }      }
     $r->print('>'.$s."</option>\n");  
  }   }
         $r->print("</select>\n");   $r->print('>'.$s."</option>\n");
    }      }
       $r->print("</select>\n");
 }  }
   
 sub groupmenu {  sub groupmenu {
     my ($r,$selectedgroups)=@_;      my ($r,$selectedgroups)=@_;
     my %grouphash;      my %grouphash = &Apache::loncommon::coursegroups();
     my $numgrp = &Apache::loncommon::coursegroups(      return if (!%grouphash);
                  \%grouphash,  
                  $env{'course.'.$env{'request.course.id'}.'.domain'},      $r->print('<select name="Group" multiple="true" size="8" >');
                  $env{'course.'.$env{'request.course.id'}.'.num'});      foreach my $group (sort(keys(%grouphash))) {
     if ($numgrp) {   $r->print('    <option value="'.$group.'"');
         $r->print('<select name="Group" multiple="true" size="8" >');   foreach (@{$selectedgroups}) {
         foreach my $group (sort(keys(%grouphash))) {      if ($group eq $_) {
             $r->print('    <option value="'.$group.'"');   $r->print(' selected');
             foreach (@{$selectedgroups}) {   last;
                 if ($group eq $_) {      }
                     $r->print(' selected');   }
                     last;   $r->print('>'.$group."</option>\n");
                 }  
             }  
             $r->print('>'.$group."</option>\n");  
         }  
         $r->print("</select>\n");  
     }      }
       $r->print("</select>\n");
 }  }
   
   
Line 1438  sub assessparms { Line 1404  sub assessparms {
     my $uhome;      my $uhome;
     my $csec;      my $csec;
     my $cgroup;      my $cgroup;
     my $grouplist;  
     my @usersgroups = ();      my @usersgroups = ();
     
     my $coursename=$env{'course.'.$env{'request.course.id'}.'.description'};      my $coursename=$env{'course.'.$env{'request.course.id'}.'.description'};
Line 1544  sub assessparms { Line 1509  sub assessparms {
  .$name{'lastname'}.' '.$name{'generation'}.   .$name{'lastname'}.' '.$name{'generation'}.
     "<br>\n".&mt('ID').": ".$name{'id'}.'<p>';      "<br>\n".&mt('ID').": ".$name{'id'}.'<p>';
     }      }
             $grouplist = &Apache::lonnet::get_users_groups(              @usersgroups = &Apache::lonnet::get_users_groups(
                                        $udom,$uname,$env{'request.course.id'});                                         $udom,$uname,$env{'request.course.id'});
             if ($grouplist) {              if (@usersgroups > 0) {
                 @usersgroups = &Apache::lonnet::sort_course_groups($grouplist,  
                                                     $env{'request.course.id'});  
                 unless (grep/^\Q$cgroup\E$/,@usersgroups) {                  unless (grep/^\Q$cgroup\E$/,@usersgroups) {
                     $cgroup = $usersgroups[0];                      $cgroup = $usersgroups[0];
                 }                   }
             } else {  
                 $cgroup = '';  
             }              }
         }          }
     }      }
Line 2012  sub crsenv { Line 1973  sub crsenv {
     my $r=shift;      my $r=shift;
     my $setoutput='';      my $setoutput='';
   
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,      my $breadcrumbs = 
     'Edit Course Environment');   &Apache::lonhtmlcommon::breadcrumbs('Edit Course Environment');
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
   
Line 2116  sub crsenv { Line 2077  sub crsenv {
     }      }
 # ------------------------- Re-init course environment entries for this session  # ------------------------- Re-init course environment entries for this session
   
     &Apache::lonnet::coursedescription($env{'request.course.id'});      &Apache::lonnet::coursedescription($env{'request.course.id'},
          {'freshen_cache' => 1});
   
 # -------------------------------------------------------- Get parameters again  # -------------------------------------------------------- Get parameters again
   
Line 2355  sub tablestart { Line 2317  sub tablestart {
  return '';   return '';
     } else {      } else {
  $tableopen=1;   $tableopen=1;
  return '<table border="2"><tr><th>'.&mt('Parameter').'</th><th>'.   return &Apache::loncommon::start_data_table().'<tr><th>'.&mt('Parameter').'</th><th>'.
     &mt('Delete').'</th><th>'.&mt('Set to ...').'</th></tr>';      &mt('Delete').'</th><th>'.&mt('Set to ...').'</th></tr>';
     }      }
 }  }
Line 2363  sub tablestart { Line 2325  sub tablestart {
 sub tableend {  sub tableend {
     if ($tableopen) {      if ($tableopen) {
  $tableopen=0;   $tableopen=0;
  return '</table>';   return &Apache::loncommon::end_data_table();
     } else {      } else {
  return'';   return'';
     }      }
Line 2614  sub listdata { Line 2576  sub listdata {
 #  #
 # Ready to print  # Ready to print
 #  #
     $r->print(&tablestart().'<tr><td><b>'.$name.      $r->print(&tablestart().
       ':</b></td><td><input type="checkbox" name="del_'.        &Apache::loncommon::start_data_table_row().
         '<td><b>'.&standard_parameter_names($name).
         '</b></td><td><input type="checkbox" name="del_'.
       $thiskey.'" /></td><td>');        $thiskey.'" /></td><td>');
     $foundkeys++;      $foundkeys++;
     if (&isdateparm($thistype)) {      if (&isdateparm($thistype)) {
Line 2660  sub listdata { Line 2624  sub listdata {
     }      }
     $r->print('<input type="hidden" name="typeof_'.$thiskey.'" value="'.      $r->print('<input type="hidden" name="typeof_'.$thiskey.'" value="'.
       $thistype.'">');        $thistype.'">');
     $r->print('</td></tr>');      $r->print('</td>'.&Apache::loncommon::end_data_table_row());
  }   }
     }      }
     return $foundkeys;      return $foundkeys;
Line 2672  sub newoverview { Line 2636  sub newoverview {
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
     my $start_page = &Apache::loncommon::start_page('Set Parameters');      my $start_page = &Apache::loncommon::start_page('Set Parameters');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Overview');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
     $r->print(<<ENDOVER);      $r->print(<<ENDOVER);
 $start_page  $start_page
 $breadcrumbs  $breadcrumbs
Line 2826  sub overview { Line 2790  sub overview {
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
   
     my $start_page=&Apache::loncommon::start_page('Modify Parameters');      my $start_page=&Apache::loncommon::start_page('Modify Parameters');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Overview');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
     $r->print(<<ENDOVER);      $r->print(<<ENDOVER);
 $start_page  $start_page
 $breadcrumbs  $breadcrumbs
Line 3053  ENDMAINFORMHEAD Line 3017  ENDMAINFORMHEAD
             action => 'setdefaults',              action => 'setdefaults',
             permission => $parm_permission,              permission => $parm_permission,
             },                        },          
   { text => 'Parameter Change Log and Course Blog Posting',    { text => 'Parameter Change Log and Course Blog Posting/User Notification',
             action => 'parameterchangelog',              action => 'parameterchangelog',
             permission => $parm_permission,              permission => $parm_permission,
             },              },
Line 3116  sub setrestrictmeta { Line 3080  sub setrestrictmeta {
     my $put_result;      my $put_result;
           
     $r->print(&Apache::loncommon::start_page('Restrict Metadata'));      $r->print(&Apache::loncommon::start_page('Restrict Metadata'));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs(undef,      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata'));
     'Restrict Metadata'));  
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
     my $key_base = $env{'course.'.$env{'request.course.id'}.'.'};      my $key_base = $env{'course.'.$env{'request.course.id'}.'.'};
Line 3148  sub setrestrictmeta { Line 3111  sub setrestrictmeta {
             }              }
         }          }
     }      }
     &Apache::lonnet::coursedescription($env{'request.course.id'});      &Apache::lonnet::coursedescription($env{'request.course.id'},
          {'freshen_cache' => 1});
     my %metadata_fields = &Apache::lonmeta::fieldnames('portfolio');      my %metadata_fields = &Apache::lonmeta::fieldnames('portfolio');
     foreach my $field (sort(keys(%metadata_fields))) {      foreach my $field (sort(keys(%metadata_fields))) {
         &Apache::lonnet::logthis ($field);          &Apache::lonnet::logthis ($field);
Line 3173  sub defaultsetter { Line 3137  sub defaultsetter {
   
     my $start_page =       my $start_page = 
  &Apache::loncommon::start_page('Parameter Setting Default Actions');   &Apache::loncommon::start_page('Parameter Setting Default Actions');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Defaults');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Defaults');
     $r->print(<<ENDDEFHEAD);      $r->print(<<ENDDEFHEAD);
 $start_page  $start_page
 $breadcrumbs  $breadcrumbs
Line 3324  ENDYESNO Line 3288  ENDYESNO
 }  }
   
 sub components {  sub components {
     my ($key,$uname,$udom)=@_;      my ($key,$uname,$udom,$exeuser,$exedomain)=@_;
     my $typeflag=0;      my $typeflag=0;
     if ($key=~/\.type$/) {      if ($key=~/\.type$/) {
  $key=~s/\.type$//;   $key=~s/\.type$//;
         $typeflag=1;          $typeflag=1;
     }      }
       my $issection;
     my ($middle,$part,$name)=($key=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);      my ($middle,$part,$name)=($key=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
     my $section=&mt('All Students');      my $section=&mt('All Students');
     if ($middle=~/^\[(.*)\]/) {      if ($middle=~/^\[(.*)\]/) {
  my $issection=$1;   $issection=$1;
  if ($uname) {   $section=&mt('Group/Section').': '.$issection;
     $section=&mt('User').": ".&Apache::loncommon::plainname($uname,$udom);  
  } else {  
     $section=&mt('Group/Section').': '.$issection;  
  }  
  $middle=~s/^\[(.*)\]//;   $middle=~s/^\[(.*)\]//;
     }      }
     $middle=~s/\.+$//;      $middle=~s/\.+$//;
     $middle=~s/^\.+//;      $middle=~s/^\.+//;
       if ($uname) {
    $section=&mt('User').": ".&Apache::loncommon::plainname($uname,$udom);
    $issection='';
       }
     my $realm='<font color="red">'.&mt('All Resources').'</font>';      my $realm='<font color="red">'.&mt('All Resources').'</font>';
       my $realmdescription=&mt('all resources'); 
     if ($middle=~/^(.+)\_\_\_\(all\)$/) {      if ($middle=~/^(.+)\_\_\_\(all\)$/) {
  $realm='<font color="green">'.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' <br /><font color="#aaaaaa" size="-2">('.$1.')</font></font>';   $realm='<font color="green">'.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' <br /><font color="#aaaaaa" size="-2">('.$1.')</font></font>';
     } elsif ($middle) {    $realmdescription=&mt('folder').' '.&Apache::lonnet::gettitle($1);
      } elsif ($middle) {
  my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle);   my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle);
  $realm='<font color="orange">'.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).' <br /><font color="#aaaaaa" size="-2">('.$url.' in '.$map.' id: '.$id.')</font></font>';   $realm='<font color="orange">'.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).' <br /><font color="#aaaaaa" size="-2">('.$url.' in '.$map.' id: '.$id.')</font></font>';
    $realmdescription=&mt('resource').' '.&Apache::lonnet::gettitle($middle);
       }
       my $what=$part.'.'.$name;
       return ($realm,$section,$name,$part,$typeflag,
       $what,$middle,$uname,$udom,$issection,$realmdescription);
   }
   
   sub standard_parameter_names {
       my ($name)=@_;
       my %standard_parms=&Apache::lonlocal::texthash('duedate' => 'Due Date',
      'answerdate' => 'Answer Date',
      'opendate' => 'Open Date',
      'maxtries' => 'Max. Number of Tries',
      'weight' => 'Weight',
      'date_start' => 'Starting Date',
      'date_end' => 'Ending Date',
      'int_pos' => 'Positive Integer',
      'int_zero_pos' => 'Positive Integer or Zero',
      'hinttries' => 'Number of Tries till Hints appear');
       if ($standard_parms{$name}) {
    return $standard_parms{$name}; 
       } else { 
    return $name; 
     }      }
     return ($realm,$section,$name,$part,$typeflag);  
 }  }
   
 sub parm_change_log {  sub parm_change_log {
Line 3359  sub parm_change_log { Line 3348  sub parm_change_log {
     my %parmlog=&Apache::lonnet::dump('nohist_parameterlog',      my %parmlog=&Apache::lonnet::dump('nohist_parameterlog',
       $env{'course.'.$env{'request.course.id'}.'.domain'},        $env{'course.'.$env{'request.course.id'}.'.domain'},
       $env{'course.'.$env{'request.course.id'}.'.num'});        $env{'course.'.$env{'request.course.id'}.'.num'});
     my %exetime=();      if ((keys(%parmlog))[0]=~/^error\:/) { undef(%parmlog); }
     foreach my $key (keys(%parmlog)) {  
  if ($key=~/^(.+)\_exe\_time$/) {      my $courseopt=&Apache::lonnet::get_courseresdata($env{'course.'.$env{'request.course.id'}.'.num'},
     $exetime{$1}=$parmlog{$key};       $env{'course.'.$env{'request.course.id'}.'.domain'});
  }      $r->print(&Apache::loncommon::start_data_table().&Apache::loncommon::start_data_table_header_row().
     }        '<th>'.&mt('Time').'</th><th>'.&mt('User').'</th><th>'.&mt('Extent').'</th><th>'.&mt('Users').'</th><th>'.
     $r->print('<table border="2">');        &mt('Parameter').'</th><th>'.&mt('Part').'</th><th>'.&mt('New Value').'</th><th>'.&mt('Announce').'</th>'.
     foreach my $id (sort { $exetime{$a}<=>$exetime{$b} } (keys(%exetime))) {        &Apache::loncommon::end_data_table_header_row());
         my @changes=split(/\,/,$parmlog{$id.'_logentry'});      foreach my $id (sort { $parmlog{$b}{'exe_time'}<=>$parmlog{$a}{'exe_time'} } (keys(%parmlog))) {
           my @changes=keys(%{$parmlog{$id}{'logentry'}});
  my $count=$#changes+1;   my $count=$#changes+1;
  my $time =   my $time =
     &Apache::lonlocal::locallocaltime($parmlog{$id.'_exe_time'});      &Apache::lonlocal::locallocaltime($parmlog{$id}{'exe_time'});
  my $plainname =    my $plainname = 
     &Apache::loncommon::plainname($parmlog{$id.'_exe_uname'},      &Apache::loncommon::plainname($parmlog{$id}{'exe_uname'},
   $parmlog{$id.'_exe_udom'});    $parmlog{$id}{'exe_udom'});
  my $about_me_link =    my $about_me_link = 
     &Apache::loncommon::aboutmewrapper($plainname,      &Apache::loncommon::aboutmewrapper($plainname,
        $parmlog{$id.'_exe_uname'},         $parmlog{$id}{'exe_uname'},
        $parmlog{$id.'_exe_udom'});         $parmlog{$id}{'exe_udom'});
    my $send_msg_link='';
  my $send_msg_link;   if ((($parmlog{$id}{'exe_uname'} ne $env{'user.name'}) 
  if ((($parmlog{$id.'_exe_uname'} ne $env{'user.name'})        || ($parmlog{$id}{'exe_udom'} ne $env{'user.domain'}))) {
      || ($parmlog{$id.'_exe_udom'} ne $env{'user.domain'}))) {      $send_msg_link ='<br />'.
     my $send_msg_link ='<br />'.  
  &Apache::loncommon::messagewrapper(&mt('Send message'),   &Apache::loncommon::messagewrapper(&mt('Send message'),
    $parmlog{$id.'_exe_uname'},     $parmlog{$id}{'exe_uname'},
    $parmlog{$id.'_exe_udom'});     $parmlog{$id}{'exe_udom'});
  }   }
  $r->print('<tr><td rowspan="'.$count.'">'.$time.'</td>   my $row_start=&Apache::loncommon::start_data_table_row();
    $r->print($row_start.'<td rowspan="'.$count.'">'.$time.'</td>
                        <td rowspan="'.$count.'">'.$about_me_link.                         <td rowspan="'.$count.'">'.$about_me_link.
   '<br /><tt>'.$parmlog{$id.'_exe_uname'}.    '<br /><tt>'.$parmlog{$id}{'exe_uname'}.
           ':'.$parmlog{$id.'_exe_udom'}.'</tt>'.            ':'.$parmlog{$id}{'exe_udom'}.'</tt>'.
   $send_msg_link.'</td>');    $send_msg_link.'</td>');
  my $makenewrow=0;   my $makenewrow=0;
  my %istype=();   my %istype=();
  foreach my $changed (sort @changes) {   foreach my $changed (reverse(sort(@changes))) {
             my ($key,$value)=split(/\=\>/,&Apache::lonnet::unescape($changed));              my $value=$parmlog{$id}{'logentry'}->{$changed};
             my ($realm,$section,$parmname,$part,$typeflag)=              my ($realm,$section,$parmname,$part,$typeflag,$what,$middle,$uname,$udom,$issection,$realmdescription)=
  &components($key,$parmlog{$id.'_uname'},$parmlog{$id.'_udom'});   &components($changed,$parmlog{$id}{'uname'},$parmlog{$id}{'udom'});
     if ($typeflag) { $istype{$parmname}=$value; }      if ($typeflag) { $istype{$parmname}=$value; }
     if ($makenewrow) { $r->print('<tr>'); } else { $makenewrow=1; }      if ($makenewrow) { $r->print($row_start); } else { $makenewrow=1; }
     $r->print('<td>'.$realm.'</td><td>'.$section.'</td><td>'.      $r->print('<td>'.$realm.'</td><td>'.$section.'</td><td>'.
       &mt('Part: [_1]',$part).'</td><td>');        &standard_parameter_names($parmname).'</td><td>'.
     if ($parmlog{$id.'_deleteflag'}) {        ($part?&mt('Part: [_1]',$part):&mt('All Parts')).'</td><td>');
       my $stillactive=0;
       if ($parmlog{$id}{'deleteflag'}) {
  $r->print(&mt('Deleted'));   $r->print(&mt('Deleted'));
     } else {      } else {
  if ($typeflag) {   if ($typeflag) {
     $r->print(&mt('Type: [_1]',$value));      $r->print(&mt('Type: [_1]',&standard_parameter_names($value)));
  } elsif (&isdateparm($istype{$parmname})) {   } else {
     $r->print(&Apache::lonlocal::locallocaltime($value));      my ($level,@all)=&parmval_by_symb($what,$middle,&Apache::lonnet::metadata($middle,$what),
         $uname,$udom,$issection,$issection,$courseopt);
       if (&isdateparm($istype{$parmname})) {
    $r->print(&Apache::lonlocal::locallocaltime($value));
       } else {
    $r->print($value);
       }
       if ($value ne $all[$level]) {
    $r->print('<br /><font color="red">'.&mt('Not active anymore').'</font>');
       } else {
    $stillactive=1;
       }
    }
       }
       $r->print('</td>');
       if ($stillactive) {
    my $title=&mt('Changed [_1]',&standard_parameter_names($parmname));
                   my $description=&mt('Changed [_1] for [_2] to [_3]',&standard_parameter_names($parmname),$realmdescription,
       (&isdateparm($istype{$parmname})?&Apache::lonlocal::locallocaltime($value):$value));
    if (($uname) && ($udom)) {
       $r->print('<td>'.
         &Apache::loncommon::messagewrapper('Notify User',$uname,$udom,$title,$description).
         '</td>');
  } else {   } else {
     $r->print($value);      $r->print('<td>'.
         &Apache::lonrss::course_blog_link($id,$title,$description).
         '</td>');
  }   }
       } else {
    $r->print('<td>&nbsp;</td>');
     }      }
     $r->print('</td></tr>');      $r->print(&Apache::loncommon::end_data_table_row());
  }   }
     }      }
     $r->print('</table>');      $r->print(&Apache::loncommon::end_data_table());
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
 }  }
   
Line 3484  sub handler { Line 3502  sub handler {
   
         } elsif (! exists($env{'form.action'})) {          } elsif (! exists($env{'form.action'})) {
             $r->print(&header());              $r->print(&header());
             $r->print(&Apache::lonhtmlcommon::breadcrumbs(undef,              $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Manager'));
  'Parameter Manager'));  
             &print_main_menu($r,$parm_permission);              &print_main_menu($r,$parm_permission);
         } elsif ($env{'form.action'} eq 'crsenv' && $parm_permission) {          } elsif ($env{'form.action'} eq 'crsenv' && $parm_permission) {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=crsenv',              &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=crsenv',
Line 3514  sub handler { Line 3531  sub handler {
     &assessparms($r);      &assessparms($r);
         } elsif ($env{'form.action'} eq 'parameterchangelog' && $parm_permission) {          } elsif ($env{'form.action'} eq 'parameterchangelog' && $parm_permission) {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',              &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',
     text=>"Parameter Change Log and Course Blog Posting"});      text=>"Parameter Change Log"});
     &parm_change_log($r);      &parm_change_log($r);
  }          }       
     } else {      } else {

Removed from v.1.290  
changed lines
  Added in v.1.305


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