--- loncom/interface/lonparmset.pm 2006/11/15 22:33:13 1.346
+++ loncom/interface/lonparmset.pm 2007/01/12 20:04:16 1.357
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.346 2006/11/15 22:33:13 banghart Exp $
+# $Id: lonparmset.pm,v 1.357 2007/01/12 20:04:16 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -65,7 +65,7 @@ use Apache::lonlocal;
use Apache::lonnavmaps;
use Apache::longroup;
use Apache::lonrss;
-use LONCAPA;
+use LONCAPA qw(:DEFAULT :match);
# --- Caches local to lonparmset
@@ -122,7 +122,10 @@ sub parmval_by_symb {
# load caches
&cacheparmhash();
- my $useropt=&Apache::lonnet::get_userresdata($uname,$udom);
+ my $useropt;
+ if ($uname ne '' && $udom ne '') {
+ $useropt = &Apache::lonnet::get_userresdata($uname,$udom);
+ }
my $result='';
my @outpar=();
@@ -173,7 +176,7 @@ sub parmval_by_symb {
}
# ------------------------------------------------------ fourth, back to course
- if (defined($csec)) {
+ if ($csec ne '') {
if (defined($$courseopt{$seclevel})) {
$outpar[9]=$$courseopt{$seclevel};
$result=9;
@@ -189,7 +192,7 @@ sub parmval_by_symb {
}
}
# ------------------------------------------------------ fifth, check course group
- if (defined($cgroup)) {
+ if ($cgroup ne '') {
if (defined($$courseopt{$grplevel})) {
$outpar[6]=$$courseopt{$grplevel};
$result=6;
@@ -206,7 +209,7 @@ sub parmval_by_symb {
# ---------------------------------------------------------- fifth, check user
- if (defined($uname)) {
+ if ($uname ne '') {
if (defined($$useropt{$courselevel})) {
$outpar[3]=$$useropt{$courselevel};
$result=3;
@@ -269,10 +272,8 @@ sub resetrulescache {
sub rulescache {
my $id=shift;
- if ($rulesid ne $env{'request.course.id'}) {
- %rules=();
- }
- unless (defined($rules{$id})) {
+ if ($rulesid ne $env{'request.course.id'}
+ && !defined($rules{$id})) {
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
%rules=&Apache::lonnet::dump('parmdefactions',$dom,$crs);
@@ -2363,8 +2364,7 @@ sub readdata {
my $classlist=&Apache::loncoursedata::get_classlist();
foreach (keys %$classlist) {
- # the following undefs are for 'domain', and 'username' respectively.
- if ($_=~/^(\w+)\:(\w+)$/) {
+ if ($_=~/^($match_username)\:($match_domain)$/) {
my ($tuname,$tudom)=($1,$2);
my $useropt=&Apache::lonnet::get_userresdata($tuname,$tudom);
foreach my $userkey (keys %{$useropt}) {
@@ -2486,7 +2486,7 @@ sub storedata {
sub extractuser {
my $key=shift;
- return ($key=~/^$env{'request.course.id'}.\[useropt\:(\w+)\:(\w+)\]\./);
+ return ($key=~/^$env{'request.course.id'}.\[useropt\:($match_username)\:($match_domain)\]\./);
}
sub listdata {
@@ -2544,7 +2544,7 @@ sub listdata {
my $section=&mt('All Students');
if ($middle=~/^\[(.*)\]/) {
my $issection=$1;
- if ($issection=~/^useropt\:(\w+)\:(\w+)/) {
+ if ($issection=~/^useropt\:($match_username)\:($match_domain)/) {
$section=&mt('User').": ".&Apache::loncommon::plainname($1,$2);
} else {
$section=&mt('Group/Section').': '.$issection;
@@ -2918,7 +2918,7 @@ sub parse_key {
$data{'scope_type'} = 'all';
if ($middle=~/^\[(.*)\]/) {
$data{'scope'} = $1;
- if ($data{'scope'}=~/^useropt\:(\w+)\:(\w+)/) {
+ if ($data{'scope'}=~/^useropt\:($match_username)\:($match_domain)/) {
$data{'scope_type'} = 'user';
$data{'scope'} = [$1,$2];
} else {
@@ -3188,15 +3188,8 @@ ENDMAINFORMHEAD
}
### Set portfolio metadata
sub output_row {
- my ($r, $field_name, $field_text, $added_flag, $alt_row) = @_;
- my $row_class;
- if ($alt_row) {
- $row_class = ' class="LC_metadata_light" ';
- } else {
- $row_class = ' class="LC_metadata_dark" ';
- }
+ my ($r, $field_name, $field_text, $added_flag) = @_;
my $output;
- $output = "
";
my $options=$env{'course.'.$env{'request.course.id'}.'.metadata.'.$field_name.'.options'};
my $values=$env{'course.'.$env{'request.course.id'}.'.metadata.'.$field_name.'.values'};
if (!defined($options)) {
@@ -3204,23 +3197,47 @@ sub output_row {
$values = '';
}
if (!($options =~ /deleted/)) {
- $output = "
";
- $output .= '
'.$field_text.':
';
- $output .= '
';
- $output .= "
\n";
my @options= ( ['active', 'Show to student'],
- ['onlyone','Student may select only one choice'],
- ['stuadd', 'Student may type choices']);
+ ['stuadd', 'Provide text area for students to type catalog information'],
+ ['choices','Provide choices for students to select from']);
+# ['onlyone','Student may select only one choice']);
if ($added_flag) {
push @options,['deleted', 'Delete Metadata Field'];
}
+ $output = &Apache::loncommon::start_data_table_row();
+ $output .= '
'.(' ' x 10).'
+
+ Student may select only one choice from list
';
+ $output .= &Apache::loncommon::end_data_table_row();
}
return ($output);
}
@@ -3271,7 +3288,7 @@ sub order_meta_fields {
{'metadata.addedorder'=>$ordered_fields},$dom,$crs);
&Apache::lonnet::appenv('course.'.$env{'request.course.id'}.'.metadata.addedorder' => $ordered_fields);
}
- my $fields = &get_added_meta_fieldnames();
+ my $fields = &get_added_meta_fieldnames($env{'request.course.id'});
my $ordered_fields;
my @fields_in_order = split /,/,$env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'};
if (!@fields_in_order) {
@@ -3337,7 +3354,7 @@ sub addmetafield {
'metadata.'.$meta_field.'.options'=>""},$dom,$crs);
$r->print('Added new Metadata Field '.$env{'form.fieldname'}." with result ".$put_result);
} else {
- my $fields = &get_deleted_meta_fieldnames();
+ my $fields = &get_deleted_meta_fieldnames($env{'request.course.id'});
if ($fields) {
$r->print('You may undelete previously deleted fields. Check those you wish to undelete and click Undelete. ');
$r->print('
-
-
-
-
-
-
+ $buttons
ENDenv
$r->print(&Apache::loncommon::end_page());
@@ -3433,9 +3455,10 @@ ENDenv
}
##################################################
sub get_added_meta_fieldnames {
+ my ($cid) = @_;
my %fields;
foreach my $key(%env) {
- if ($key =~ m/\.metadata\.(.+)\.added$/) {
+ if ($key =~ m/\Q$cid\E\.metadata\.(.+)\.added$/) {
my $field_name = $1;
my ($display_field_name) = $env{$key};
$fields{$field_name} = $display_field_name;
@@ -3444,10 +3467,10 @@ sub get_added_meta_fieldnames {
return \%fields;
}
sub get_deleted_meta_fieldnames {
+ my ($cid) = @_;
my %fields;
- my ($default_fields) = @_;
foreach my $key(%env) {
- if ($key =~ m/\.metadata\.(.+)\.added$/) {
+ if ($key =~ m/\Q$cid\E\.metadata\.(.+)\.added$/) {
my $field_name = $1;
if ($env{'course.'.$env{'request.course.id'}.'.metadata.'.$field_name.'.options'} =~ m/deleted/) {
my ($display_field_name) = $env{$key};
@@ -3709,13 +3732,7 @@ sub parm_change_log {
\%saveable_parameters);
&Apache::loncommon::restore_course_settings('parameter_log',
\%saveable_parameters);
- if (!$env{'form.show'}) { $env{'form.show'}=10; }
-
- my $countselect =
- &Apache::lonmeta::selectbox('show',$env{'form.show'},undef,
- (&mt('all'),10,20,50,100,1000,10000));
-
- $r->print(''.&mt('[_1] Records',$countselect).''.
+ $r->print(&Apache::loncommon::display_filter().
''.
'');
@@ -3727,7 +3744,25 @@ sub parm_change_log {
&mt('Parameter').'
'.&mt('Part').'
'.&mt('New Value').'
'.&mt('Announce').'
'.
&Apache::loncommon::end_data_table_header_row());
my $shown=0;
- foreach my $id (sort { $parmlog{$b}{'exe_time'}<=>$parmlog{$a}{'exe_time'} } (keys(%parmlog))) {
+ my $folder='';
+ if ($env{'form.displayfilter'} eq 'currentfolder') {
+ my $last='';
+ if (tie(my %hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db',
+ &GDBM_READER(),0640)) {
+ $last=$hash{'last_known'};
+ untie(%hash);
+ }
+ if ($last) { ($folder) = &Apache::lonnet::decode_symb($last); }
+ }
+ foreach my $id (sort
+ {
+ if ($parmlog{$b}{'exe_time'} ne $parmlog{$a}{'exe_time'}) {
+ return $parmlog{$b}{'exe_time'} <=>$parmlog{$a}{'exe_time'}
+ }
+ my $aid = (split('00000',$a))[-1];
+ my $bid = (split('00000',$b))[-1];
+ return $bid<=>$aid;
+ } (keys(%parmlog))) {
my @changes=keys(%{$parmlog{$id}{'logentry'}});
my $count = 0;
my $time =
@@ -3748,7 +3783,6 @@ sub parm_change_log {
$parmlog{$id}{'exe_udom'});
}
my $row_start=&Apache::loncommon::start_data_table_row();
- $r->print($row_start);
my $makenewrow=0;
my %istype=();
my $output;
@@ -3758,6 +3792,11 @@ sub parm_change_log {
!exists($parmlog{$id}{'logentry'}{$changed.'.type'}));
my ($realm,$section,$parmname,$part,$what,$middle,$uname,$udom,$issection,$realmdescription)=
&components($changed,$parmlog{$id}{'uname'},$parmlog{$id}{'udom'},undef,undef,$typeflag);
+ if ($env{'form.displayfilter'} eq 'currentfolder') {
+ if ($folder) {
+ if ($middle!~/^\Q$folder\E/) { next; }
+ }
+ }
if ($typeflag) {
$istype{$parmname}=$value;
if (!$env{'form.includetypes'}) { next; }
@@ -3810,13 +3849,20 @@ sub parm_change_log {
}
$output .= ''.&Apache::loncommon::end_data_table_row();
}
- $r->print('
'.$time.'
+ if ($env{'form.displayfilter'} eq 'containing') {
+ my $wholeentry=$about_me_link.':'.
+ $parmlog{$id}{'exe_uname'}.':'.$parmlog{$id}{'exe_udom'}.':'.
+ $output;
+ if ($wholeentry!~/\Q$env{'form.containingphrase'}\E/i) { next; }
+ }
+ if ($count) {
+ $r->print($row_start.'