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

version 1.286, 2006/04/14 11:55:58 version 1.290, 2006/04/15 21:12:56
Line 397  sub storeparm_by_symb { Line 397  sub storeparm_by_symb {
 {  {
     my $logid;      my $logid;
     sub log_parmset {      sub log_parmset {
  my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$cgroup)=@_;   my ($storehash,$delflag,$uname,$udom)=@_;
           my $logentry=join(',',map {
       &Apache::lonnet::escape($_).'=>'.&Apache::lonnet::escape($$storehash{$_});
    } keys %$storehash);
  $logid++;   $logid++;
  my $id=time().'00000'.$$.'00000'.$logid;   my $id=time().'00000'.$$.'00000'.$logid;
  &Apache::lonnet::put('nohist_parameterlog',   &Apache::lonnet::put('nohist_parameterlog',
Line 406  sub storeparm_by_symb { Line 409  sub storeparm_by_symb {
  $id.'_exe_udom'  => $env{'user.domain'},   $id.'_exe_udom'  => $env{'user.domain'},
  $id.'_exe_time'  => time(),   $id.'_exe_time'  => time(),
  $id.'_exe_ip'    => $ENV{'REMOTE_ADDR'},   $id.'_exe_ip'    => $ENV{'REMOTE_ADDR'},
  $id.'_symb'      => $symb,   $id.'_delflag'   => $delflag,
  $id.'_spnam'     => $spnam,                                   $id.'_logentry'  => $logentry,
  $id.'_snum'      => $snum,  
  $id.'_nval'      => $nval,  
  $id.'_ntype'     => $ntype,  
  $id.'_uname'     => $uname,   $id.'_uname'     => $uname,
  $id.'_udom'      => $udom,   $id.'_udom'      => $udom,
  $id.'_csec'      => $csec,  
  $id.'_cgroup'    => $cgroup  
      },       },
      $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'}
Line 425  sub storeparm_by_symb { Line 423  sub storeparm_by_symb {
 sub storeparm_by_symb_inner {  sub storeparm_by_symb_inner {
 # ---------------------------------------------------------- Get symb, map, etc  # ---------------------------------------------------------- Get symb, map, etc
     my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$cgroup)=@_;      my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$cgroup)=@_;
     &log_parmset(@_);  
 # ---------------------------------------------------------- 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];    
Line 479  sub storeparm_by_symb_inner { Line 476  sub storeparm_by_symb_inner {
  if ($delete) {   if ($delete) {
     $reply=&Apache::lonnet::del      $reply=&Apache::lonnet::del
  ('resourcedata',[keys(%storecontent)],$cdom,$cnum);   ('resourcedata',[keys(%storecontent)],$cdom,$cnum);
               &log_parmset(\%storecontent,1);
  } else {   } else {
     $reply=&Apache::lonnet::cput      $reply=&Apache::lonnet::cput
  ('resourcedata',\%storecontent,$cdom,$cnum);   ('resourcedata',\%storecontent,$cdom,$cnum);
       &log_parmset(\%storecontent);
  }   }
  &Apache::lonnet::devalidatecourseresdata($cnum,$cdom);   &Apache::lonnet::devalidatecourseresdata($cnum,$cdom);
     } else {      } else {
Line 502  sub storeparm_by_symb_inner { Line 501  sub storeparm_by_symb_inner {
  if ($delete) {   if ($delete) {
     $reply=&Apache::lonnet::del      $reply=&Apache::lonnet::del
  ('resourcedata',[keys(%storecontent)],$udom,$uname);   ('resourcedata',[keys(%storecontent)],$udom,$uname);
       &log_parmset(\%storecontent,1,$uname,$udom);
  } else {   } else {
     $reply=&Apache::lonnet::cput      $reply=&Apache::lonnet::cput
  ('resourcedata',\%storecontent,$udom,$uname);   ('resourcedata',\%storecontent,$udom,$uname);
       &log_parmset(\%storecontent,0,$uname,$udom);
  }   }
  &Apache::lonnet::devalidateuserresdata($uname,$udom);   &Apache::lonnet::devalidateuserresdata($uname,$udom);
     }      }
Line 2421  sub storedata { Line 2422  sub storedata {
  if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,   if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,
  $tkey.'.type' => $typeof},   $tkey.'.type' => $typeof},
  $tudom,$tuname) eq 'ok') {   $tudom,$tuname) eq 'ok') {
       &log_parmset({$tkey=>$data,$tkey.'.type' => $typeof},0,$tuname,$tudom);
     $r->print('<br />'.&mt('Stored modified parameter for').' '.      $r->print('<br />'.&mt('Stored modified parameter for').' '.
       &Apache::loncommon::plainname($tuname,$tudom));        &Apache::loncommon::plainname($tuname,$tudom));
  } else {   } else {
Line 2436  sub storedata { Line 2438  sub storedata {
     } elsif ($cmd eq 'del') {      } elsif ($cmd eq 'del') {
  if ($tuname) {   if ($tuname) {
     if (&Apache::lonnet::del('resourcedata',[$tkey],$tudom,$tuname) eq 'ok') {      if (&Apache::lonnet::del('resourcedata',[$tkey],$tudom,$tuname) eq 'ok') {
       &log_parmset({$tkey=>''},1,$tuname,$tudom);
  $r->print('<br />'.&mt('Deleted parameter for').' '.&Apache::loncommon::plainname($tuname,$tudom));   $r->print('<br />'.&mt('Deleted parameter for').' '.&Apache::loncommon::plainname($tuname,$tudom));
     } else {      } else {
  $r->print('<h2><font color="red">'.   $r->print('<h2><font color="red">'.
Line 2453  sub storedata { Line 2456  sub storedata {
  if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,   if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,
  $tkey.'.type' => $typeof},   $tkey.'.type' => $typeof},
  $tudom,$tuname) eq 'ok') {   $tudom,$tuname) eq 'ok') {
       &log_parmset({$tkey=>$data,$tkey.'.type' => $typeof},0,$tuname,$tudom);
     $r->print('<br />'.&mt('Stored modified date for').' '.&Apache::loncommon::plainname($tuname,$tudom));      $r->print('<br />'.&mt('Stored modified date for').' '.&Apache::loncommon::plainname($tuname,$tudom));
  } else {   } else {
     $r->print('<h2><font color="red">'.      $r->print('<h2><font color="red">'.
Line 2473  sub storedata { Line 2477  sub storedata {
     my $putentries=$#newdatakeys+1;      my $putentries=$#newdatakeys+1;
     if ($delentries) {      if ($delentries) {
  if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') {   if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') {
       my %loghash=map { $_ => '' } @deldata;
       &log_parmset(\%loghash,1);
     $r->print('<h2>'.&mt('Deleted [_1] parameter(s)</h2>',$delentries));      $r->print('<h2>'.&mt('Deleted [_1] parameter(s)</h2>',$delentries));
  } else {   } else {
     $r->print('<h2><font color="red">'.      $r->print('<h2><font color="red">'.
Line 2482  sub storedata { Line 2488  sub storedata {
     }      }
     if ($putentries) {      if ($putentries) {
  if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {   if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {
       &log_parmset(\%newdata,0);
     $r->print('<h3>'.&mt('Stored [_1] parameter(s)',$putentries/2).'</h3>');      $r->print('<h3>'.&mt('Stored [_1] parameter(s)',$putentries/2).'</h3>');
  } else {   } else {
     $r->print('<h2><font color="red">'.      $r->print('<h2><font color="red">'.
Line 3316  ENDYESNO Line 3323  ENDYESNO
     return;      return;
 }  }
   
   sub components {
       my ($key,$uname,$udom)=@_;
       my $typeflag=0;
       if ($key=~/\.type$/) {
    $key=~s/\.type$//;
           $typeflag=1;
       }
       my ($middle,$part,$name)=($key=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
       my $section=&mt('All Students');
       if ($middle=~/^\[(.*)\]/) {
    my $issection=$1;
    if ($uname) {
       $section=&mt('User').": ".&Apache::loncommon::plainname($uname,$udom);
    } else {
       $section=&mt('Group/Section').': '.$issection;
    }
    $middle=~s/^\[(.*)\]//;
       }
       $middle=~s/\.+$//;
       $middle=~s/^\.+//;
       my $realm='<font color="red">'.&mt('All Resources').'</font>';
       if ($middle=~/^(.+)\_\_\_\(all\)$/) {
    $realm='<font color="green">'.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' <br /><font color="#aaaaaa" size="-2">('.$1.')</font></font>';
       } elsif ($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>';
       }
       return ($realm,$section,$name,$part,$typeflag);
   }
   
 sub parm_change_log {  sub parm_change_log {
     my ($r)=@_;      my ($r)=@_;
     &startpage($r);      &startpage($r);
   
     my @ids=();  
     my %symbp=();  
     my %mapp=();  
     my %typep=();  
     my %keyp=();  
     my %uris=();  
     my %maptitles=();  
   
 # -------------------------------------------------------- Variable declaration  
   
     my %allmaps=();  
     my %alllevs=();  
   
     my $uname;  
     my $udom;  
     my $uhome;  
     my $csec;  
     my $cgroup;  
     my $grouplist;  
     my @usersgroups = ();  
    
     my $coursename=$env{'course.'.$env{'request.course.id'}.'.description'};  
   
     $alllevs{'Resource Level'}='full';  
     $alllevs{'Map/Folder Level'}='map';  
     $alllevs{'Course Level'}='general';  
   
     my %allparms;  
     my %allparts;  
     my %keyorder;  
 # --------------------------------------------------------- Get all assessments  
     &extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allmaps,   
  \%mapp, \%symbp,\%maptitles,\%uris,  
  \%keyorder);  
   
     $mapp{'0.0'} = '';  
     $symbp{'0.0'} = '';  
   
     my %level=&Apache::lonlocal::texthash('parmlevel_14' => 'General Course',  
   'parmlevel_13' => 'Map or Folder level in course',  
   'parmlevel_12' => 'Resource default',  
   'parmlevel_11' => 'Map default',  
   'parmlevel_10' => 'Resource level in course',  
   'parmlevel_9' => 'General for section',  
   'parmlevel_8' => 'Map or Folder level for section',  
   'parmlevel_7' => 'Resource level in section',  
   'parmlevel_6' => 'General for group',  
   'parmlevel_5' => 'Map or Folder level for group',  
   'parmlevel_4' => 'Resource level in group',  
   'parmlevel_3' => 'General for specific student',  
   'parmlevel_2' => 'Map or Folder level for specific student',  
   'parmlevel_1' => 'Resource level for specific student');  
   
 #    $id.'_exe_uname' => $env{'user.name'},  
 #    $id.'_exe_udom'  => $env{'user.domain'},  
 #    $id.'_exe_time'  => time(),  
 #    $id.'_exe_ip'    => $ENV{'REMOTE_ADDR'},  
 #    $id.'_symb'      => $symb,  
 #    $id.'_spnam'     => $spnam,  
 #    $id.'_snum'      => $snum,  
 #    $id.'_nval'      => $nval,  
 #    $id.'_ntype'     => $ntype,  
 #    $id.'_uname'     => $uname,  
 #    $id.'_udom'      => $udom,  
 #    $id.'_csec'      => $csec,  
 #    $id.'_cgroup'    => $cgroup  
     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=();      my %exetime=();
     foreach my $key (keys %parmlog) {      foreach my $key (keys(%parmlog)) {
  if ($key=~/^(.+)\_exe\_time$/) {   if ($key=~/^(.+)\_exe\_time$/) {
     $exetime{$1}=$parmlog{$key};      $exetime{$1}=$parmlog{$key};
  }   }
     }      }
     $r->print('<table border="2">');      $r->print('<table border="2">');
     foreach my $id (sort { $exetime{$a}<=>$exetime{$b} } keys %exetime) {      foreach my $id (sort { $exetime{$a}<=>$exetime{$b} } (keys(%exetime))) {
         my ($part,$name)=($parmlog{$id.'_spnam'}=~/^(.*)[\_\.]([^\_\.]+)$/);          my @changes=split(/\,/,$parmlog{$id.'_logentry'});
         my $spnam=$part.'_'.$name;   my $count=$#changes+1;
  $r->print('<tr><td>'.   my $time =
   &Apache::lonlocal::locallocaltime($parmlog{$id.'_exe_time'}).      &Apache::lonlocal::locallocaltime($parmlog{$id.'_exe_time'});
   '</td><td>'.   my $plainname = 
   &Apache::loncommon::aboutmewrapper(      &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 = 
      $parmlog{$id.'_exe_uname'},      &Apache::loncommon::aboutmewrapper($plainname,
      $parmlog{$id.'_exe_udom'}).'<br /><tt>'.         $parmlog{$id.'_exe_uname'},
   $parmlog{$id.'_exe_uname'}.'@'.$parmlog{$id.'_exe_udom'}.'</tt>'.         $parmlog{$id.'_exe_udom'});
   ((($parmlog{$id.'_exe_uname'} ne $env{'user.name'}) ||  
     ($parmlog{$id.'_exe_udom'} ne $env{'user.domain'}))?   my $send_msg_link;
    '<br />'.&Apache::loncommon::messagewrapper(&mt('Send message'),   if ((($parmlog{$id.'_exe_uname'} ne $env{'user.name'}) 
        $parmlog{$id.'_exe_uname'},       || ($parmlog{$id.'_exe_udom'} ne $env{'user.domain'}))) {
        $parmlog{$id.'_exe_udom'}):'').      my $send_msg_link ='<br />'.
   '</td><td>'.   &Apache::loncommon::messagewrapper(&mt('Send message'),
                   $level{'parmlevel_'.$parmlog{$id.'_snum'}}.     $parmlog{$id.'_exe_uname'},
                   '</td><td>'.     $parmlog{$id.'_exe_udom'});
                   &mt($allparms{$name}).'<br /><tt>'.$name.'</tt>'.   }
                   '</td><td>'.   $r->print('<tr><td rowspan="'.$count.'">'.$time.'</td>
                   ($part?&mt('Part: [_1]',$part):&mt('All parts')).                         <td rowspan="'.$count.'">'.$about_me_link.
   '</td><td>'.    '<br /><tt>'.$parmlog{$id.'_exe_uname'}.
                   $parmlog{$id.'_symb'}.            ':'.$parmlog{$id.'_exe_udom'}.'</tt>'.
   '</td><td>'.    $send_msg_link.'</td>');
   ($parmlog{$id.'_nval'}?   my $makenewrow=0;
    (&isdateparm($spnam)?&Apache::lonlocal::locallocaltime($parmlog{$id.'_nval'}):$parmlog{$id.'_nval'})   my %istype=();
    :&mt('Deleted Parameter')).   foreach my $changed (sort @changes) {
   '</td></tr>');              my ($key,$value)=split(/\=\>/,&Apache::lonnet::unescape($changed));
               my ($realm,$section,$parmname,$part,$typeflag)=
    &components($key,$parmlog{$id.'_uname'},$parmlog{$id.'_udom'});
       if ($typeflag) { $istype{$parmname}=$value; }
       if ($makenewrow) { $r->print('<tr>'); } else { $makenewrow=1; }
       $r->print('<td>'.$realm.'</td><td>'.$section.'</td><td>'.
         &mt('Part: [_1]',$part).'</td><td>');
       if ($parmlog{$id.'_deleteflag'}) {
    $r->print(&mt('Deleted'));
       } else {
    if ($typeflag) {
       $r->print(&mt('Type: [_1]',$value));
    } elsif (&isdateparm($istype{$parmname})) {
       $r->print(&Apache::lonlocal::locallocaltime($value));
    } else {
       $r->print($value);
    }
       }
       $r->print('</td></tr>');
    }
     }      }
     $r->print('</table>');      $r->print('</table>');
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());

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


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