--- loncom/interface/lonparmset.pm 2006/04/26 14:52:22 1.296 +++ loncom/interface/lonparmset.pm 2006/05/16 20:43:57 1.306 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.296 2006/04/26 14:52:22 albertel Exp $ +# $Id: lonparmset.pm,v 1.306 2006/05/16 20:43:57 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -63,6 +63,7 @@ use Apache::lonhomework; use Apache::lonxml; use Apache::lonlocal; use Apache::lonnavmaps; +use Apache::lonrss; # --- Caches local to lonparmset @@ -90,11 +91,11 @@ Inputs: $what - a parameter spec (inclu Returns: A list, the first item is the index into the remaining list of items of parm valuse that is the active one, the list consists of parm values at the 14 possible levels -14 - General Course -13 - Map or Folder level in course +14- General Course +13- Map or Folder level in course 12- resource default 11- map default -10 - resource level in course +10- resource level in course 9 - General for section 8 - Map or Folder level for section 7 - resource level in section @@ -117,7 +118,6 @@ sub parmval { sub parmval_by_symb { my ($what,$symb,$def,$uname,$udom,$csec,$cgroup,$courseopt)=@_; # load caches - &cacheparmhash(); my $useropt=&Apache::lonnet::get_userresdata($uname,$udom); @@ -126,6 +126,7 @@ sub parmval_by_symb { my @outpar=(); # ----------------------------------------------------- Cascading lookup scheme my $map=(&Apache::lonnet::decode_symb($symb))[0]; + $map = &Apache::lonnet::deversion($map); my $symbparm=$symb.'.'.$what; my $mapparm=$map.'___(all).'.$what; @@ -404,6 +405,8 @@ sub storeparm_by_symb_inner { # ---------------------------------------------------------- Construct prefixes $spnam=~s/\_([^\_]+)$/\.$1/; my $map=(&Apache::lonnet::decode_symb($symb))[0]; + $map = &Apache::lonnet::deversion($map); + my $symbparm=$symb.'.'.$spnam; my $mapparm=$map.'___(all).'.$spnam; @@ -650,8 +653,7 @@ sub startpage { &page_js(), {'add_entries' => \%loaditems,}); my $breadcrumbs = - &Apache::lonhtmlcommon::breadcrumbs(undef, - 'Table Mode Parameter Setting'); + &Apache::lonhtmlcommon::breadcrumbs('Table Mode Parameter Setting'); $r->print(< "or ID", 'ad' => "at Domain" ); - my %sectionhash=(); my $sections=''; - my $numsec = &Apache::loncommon::get_sections( - $env{'course.'.$env{'request.course.id'}.'.domain'}, - $env{'course.'.$env{'request.course.id'}.'.num'}, - \%sectionhash); + my %sectionhash = &Apache::loncommon::get_sections(); + my $groups; - my %grouphash; - my $numgrp = &Apache::loncommon::coursegroups( - \%grouphash, - $env{'course.'.$env{'request.course.id'}.'.domain'}, - $env{'course.'.$env{'request.course.id'}.'.num'}); - if ($numsec > 0) { + my %grouphash = &Apache::loncommon::coursegroups(); + + if (%sectionhash) { $sections=$lt{'se'}.': print(''); + foreach my $s ('all',sort keys %sectionhash) { + $r->print(' \n"); } - $r->print("\n"); - } + $r->print('>'.$s."\n"); + } + $r->print("\n"); } sub groupmenu { my ($r,$selectedgroups)=@_; - my %grouphash; - my $numgrp = &Apache::loncommon::coursegroups( - \%grouphash, - $env{'course.'.$env{'request.course.id'}.'.domain'}, - $env{'course.'.$env{'request.course.id'}.'.num'}); - if ($numgrp) { - $r->print('\n"); + my %grouphash = &Apache::loncommon::coursegroups(); + return if (!%grouphash); + + $r->print('\n"); } @@ -1416,7 +1404,6 @@ sub assessparms { my $uhome; my $csec; my $cgroup; - my $grouplist; my @usersgroups = (); my $coursename=$env{'course.'.$env{'request.course.id'}.'.description'}; @@ -1522,16 +1509,12 @@ sub assessparms { .$name{'lastname'}.' '.$name{'generation'}. "
\n".&mt('ID').": ".$name{'id'}.'

'; } - $grouplist = &Apache::lonnet::get_users_groups( + @usersgroups = &Apache::lonnet::get_users_groups( $udom,$uname,$env{'request.course.id'}); - if ($grouplist) { - @usersgroups = &Apache::lonnet::sort_course_groups($grouplist, - $env{'request.course.id'}); - unless (grep/^\Q$cgroup\E$/,@usersgroups) { + if (@usersgroups > 0) { + unless (grep(/^\Q$cgroup\E$/,@usersgroups)) { $cgroup = $usersgroups[0]; - } - } else { - $cgroup = ''; + } } } } @@ -1947,7 +1930,7 @@ ENDMAPONE } if ($csec) {$r->print(&mt("Section")." $csec\n")}; - if ($cgroup) {$r->print(&mt("Group")." $csec\n")}; + if ($cgroup) {$r->print(&mt("Group")." $cgroup\n")}; $r->print("\n"); #---------------------------------------------------------------- print table $r->print('

'); @@ -1990,8 +1973,8 @@ sub crsenv { my $r=shift; my $setoutput=''; - my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef, - 'Edit Course Environment'); + my $breadcrumbs = + &Apache::lonhtmlcommon::breadcrumbs('Edit Course Environment'); my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; @@ -2094,7 +2077,7 @@ sub crsenv { } # ------------------------- 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 @@ -2653,7 +2636,7 @@ sub newoverview { my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; my $start_page = &Apache::loncommon::start_page('Set Parameters'); - my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Overview'); + my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview'); $r->print(<print(<print(&Apache::loncommon::start_page('Restrict Metadata')); - $r->print(&Apache::lonhtmlcommon::breadcrumbs(undef, - 'Restrict Metadata')); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata')); my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; my $key_base = $env{'course.'.$env{'request.course.id'}.'.'}; @@ -3155,7 +3137,7 @@ sub defaultsetter { my $start_page = &Apache::loncommon::start_page('Parameter Setting Default Actions'); - my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Defaults'); + my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Defaults'); $r->print(<'; + my $realmdescription=&mt('all resources'); if ($middle=~/^(.+)\_\_\_\(all\)$/) { $realm=''.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).'
('.$1.')
'; - } elsif ($middle) { + $realmdescription=&mt('folder').' '.&Apache::lonnet::gettitle($1); + } elsif ($middle) { my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle); $realm=''.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).'
('.$url.' in '.$map.' id: '.$id.')
'; + $realmdescription=&mt('resource').' '.&Apache::lonnet::gettitle($middle); } my $what=$part.'.'.$name; return ($realm,$section,$name,$part,$typeflag, - $what,$middle,$uname,$udom,$issection); + $what,$middle,$uname,$udom,$issection,$realmdescription); } sub standard_parameter_names { @@ -3363,12 +3348,15 @@ sub parm_change_log { my %parmlog=&Apache::lonnet::dump('nohist_parameterlog', $env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); + if ((keys(%parmlog))[0]=~/^error\:/) { undef(%parmlog); } + my $courseopt=&Apache::lonnet::get_courseresdata($env{'course.'.$env{'request.course.id'}.'.num'}, $env{'course.'.$env{'request.course.id'}.'.domain'}); - $r->print('
'); - my $bgcolor='#EEEEEE'; + $r->print(&Apache::loncommon::start_data_table().&Apache::loncommon::start_data_table_header_row(). + ''. + &Apache::loncommon::end_data_table_header_row()); foreach my $id (sort { $parmlog{$b}{'exe_time'}<=>$parmlog{$a}{'exe_time'} } (keys(%parmlog))) { - if ($bgcolor eq '#EEEEEE') { $bgcolor='#FFFFCC'; } else { $bgcolor='#EEEEEE'; } my @changes=keys(%{$parmlog{$id}{'logentry'}}); my $count=$#changes+1; my $time = @@ -3388,7 +3376,8 @@ sub parm_change_log { $parmlog{$id}{'exe_uname'}, $parmlog{$id}{'exe_udom'}); } - $r->print(' + my $row_start=&Apache::loncommon::start_data_table_row(); + $r->print($row_start.''); } else { $makenewrow=1; } + if ($makenewrow) { $r->print($row_start); } else { $makenewrow=1; } $r->print(''); 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(''); + $r->print(''); } else { - $r->print(''); + $r->print(''); } } else { $r->print(''); } - $r->print(''); + $r->print(&Apache::loncommon::end_data_table_row()); } } - $r->print('
'.&mt('Time').''.&mt('User').''.&mt('Extent').''.&mt('Users').''. + &mt('Parameter').''.&mt('Part').''.&mt('New Value').''.&mt('Announce').'
'.$time.''.$time.' '.$about_me_link. '
'.$parmlog{$id}{'exe_uname'}. ':'.$parmlog{$id}{'exe_udom'}.''. @@ -3397,10 +3386,10 @@ sub parm_change_log { my %istype=(); foreach my $changed (reverse(sort(@changes))) { my $value=$parmlog{$id}{'logentry'}->{$changed}; - my ($realm,$section,$parmname,$part,$typeflag,$what,$middle,$uname,$udom,$issection)= + my ($realm,$section,$parmname,$part,$typeflag,$what,$middle,$uname,$udom,$issection,$realmdescription)= &components($changed,$parmlog{$id}{'uname'},$parmlog{$id}{'udom'}); if ($typeflag) { $istype{$parmname}=$value; } - if ($makenewrow) { $r->print('
'.$realm.''.$section.''. &standard_parameter_names($parmname).''. ($part?&mt('Part: [_1]',$part):&mt('All Parts')).''); @@ -3427,18 +3416,25 @@ sub parm_change_log { } $r->print('Notify Link'. + &Apache::loncommon::messagewrapper('Notify User',$uname,$udom,$title,$description). + 'Blog Link'. + &Apache::lonrss::course_blog_link($id,$title,$description). + ' 
'); + $r->print(&Apache::loncommon::end_data_table()); $r->print(&Apache::loncommon::end_page()); } @@ -3506,8 +3502,7 @@ sub handler { } elsif (! exists($env{'form.action'})) { $r->print(&header()); - $r->print(&Apache::lonhtmlcommon::breadcrumbs(undef, - 'Parameter Manager')); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Manager')); &print_main_menu($r,$parm_permission); } elsif ($env{'form.action'} eq 'crsenv' && $parm_permission) { &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=crsenv',