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

version 1.281, 2006/03/23 22:32:10 version 1.290, 2006/04/15 21:12:56
Line 394  sub storeparm_by_symb { Line 394  sub storeparm_by_symb {
     return '';      return '';
 }  }
   
   {
       my $logid;
       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 {
 # ---------------------------------------------------------- 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)=@_;
Line 450  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 473  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 634  ENDJS Line 664  ENDJS
 sub startpage {  sub startpage {
     my ($r) = @_;      my ($r) = @_;
   
     my $loaditems =       my %loaditems = ('onunload' => "pclose()",
  qq|onUnload="pclose()" onLoad="group_or_section('cgroup')"|;       'onload'   => "group_or_section('cgroup')",);
   
     my $start_page =       my $start_page = 
  &Apache::loncommon::start_page('Set/Modify Course Parameters',   &Apache::loncommon::start_page('Set/Modify Course Parameters',
        &page_js(),         &page_js(),
        {'add_entries' => $loaditems,});         {'add_entries' => \%loaditems,});
     my $breadcrumbs =       my $breadcrumbs = 
  &Apache::lonhtmlcommon::breadcrumbs(undef,   &Apache::lonhtmlcommon::breadcrumbs(undef,
     'Table Mode Parameter Setting');      'Table Mode Parameter Setting');
Line 2392  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 2407  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 2424  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 2444  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 2453  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 3016  ENDMAINFORMHEAD Line 3052  ENDMAINFORMHEAD
           { text => 'Set Parameter Setting Default Actions',            { text => 'Set Parameter Setting Default Actions',
             action => 'setdefaults',              action => 'setdefaults',
             permission => $parm_permission,              permission => $parm_permission,
               },          
     { text => 'Parameter Change Log and Course Blog Posting',
               action => 'parameterchangelog',
               permission => $parm_permission,
             },              },
           );            );
     my $menu_html = '';      my $menu_html = '';
Line 3283  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 {
       my ($r)=@_;
       &startpage($r);
       my %parmlog=&Apache::lonnet::dump('nohist_parameterlog',
         $env{'course.'.$env{'request.course.id'}.'.domain'},
         $env{'course.'.$env{'request.course.id'}.'.num'});
       my %exetime=();
       foreach my $key (keys(%parmlog)) {
    if ($key=~/^(.+)\_exe\_time$/) {
       $exetime{$1}=$parmlog{$key};
    }
       }
       $r->print('<table border="2">');
       foreach my $id (sort { $exetime{$a}<=>$exetime{$b} } (keys(%exetime))) {
           my @changes=split(/\,/,$parmlog{$id.'_logentry'});
    my $count=$#changes+1;
    my $time =
       &Apache::lonlocal::locallocaltime($parmlog{$id.'_exe_time'});
    my $plainname = 
       &Apache::loncommon::plainname($parmlog{$id.'_exe_uname'},
     $parmlog{$id.'_exe_udom'});
    my $about_me_link = 
       &Apache::loncommon::aboutmewrapper($plainname,
          $parmlog{$id.'_exe_uname'},
          $parmlog{$id.'_exe_udom'});
   
    my $send_msg_link;
    if ((($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'),
      $parmlog{$id.'_exe_uname'},
      $parmlog{$id.'_exe_udom'});
    }
    $r->print('<tr><td rowspan="'.$count.'">'.$time.'</td>
                          <td rowspan="'.$count.'">'.$about_me_link.
     '<br /><tt>'.$parmlog{$id.'_exe_uname'}.
             ':'.$parmlog{$id.'_exe_udom'}.'</tt>'.
     $send_msg_link.'</td>');
    my $makenewrow=0;
    my %istype=();
    foreach my $changed (sort @changes) {
               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(&Apache::loncommon::end_page());
   }
   
 ##################################################  ##################################################
 ##################################################  ##################################################
   
Line 3375  sub handler { Line 3512  sub handler {
     text=>"Table Mode",      text=>"Table Mode",
     help => 'Course_Setting_Parameters'});      help => 'Course_Setting_Parameters'});
     &assessparms($r);      &assessparms($r);
         }          } elsif ($env{'form.action'} eq 'parameterchangelog' && $parm_permission) {
                       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',
       text=>"Parameter Change Log and Course Blog Posting"});
       &parm_change_log($r);
    }       
     } else {      } else {
 # ----------------------------- Not in a course, or not allowed to modify parms  # ----------------------------- Not in a course, or not allowed to modify parms
  $env{'user.error.msg'}=   $env{'user.error.msg'}=

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


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