--- loncom/interface/lonparmset.pm 2006/12/14 20:37:24 1.350.2.2
+++ loncom/interface/lonparmset.pm 2007/01/15 22:53:00 1.358
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.350.2.2 2006/12/14 20:37:24 albertel Exp $
+# $Id: lonparmset.pm,v 1.358 2007/01/15 22:53:00 banghart Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -3189,7 +3189,6 @@ ENDMAINFORMHEAD
### Set portfolio metadata
sub output_row {
my ($r, $field_name, $field_text, $added_flag) = @_;
- my $row_class;
my $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'};
@@ -3198,26 +3197,47 @@ sub output_row {
$values = '';
}
if (!($options =~ /deleted/)) {
- $output = &Apache::loncommon::start_data_table_row();
- $output .= '
'.$field_text.': ';
- # $output .= ''.$field_text.': ';
- $output .= ' ';
- $output .= &Apache::loncommon::end_data_table_row();
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 .= ''.$field_text.': ';
+ $output .= &Apache::loncommon::end_data_table_row();
foreach my $opt (@options) {
my $checked = ($options =~ m/$opt->[0]/) ? ' checked="checked" ' : '' ;
$output .= &Apache::loncommon::continue_data_table_row();
- $output .= ''.(' ' x 5).' '.
- &mt($opt->[1]).' ';
+ $output .= ''.(' ' x 5).'
+ '.
+ &mt($opt->[1]).' ';
$output .= &Apache::loncommon::end_data_table_row();
}
-
+ $output .= &Apache::loncommon::continue_data_table_row();
+ $output .= ''.(' ' x 10).' ';
+ $output .= &Apache::loncommon::end_data_table_row();
+ my $multiple_checked;
+ my $single_checked;
+ if ($options =~ m/onlyone/) {
+ $multiple_checked = "";
+ $single_checked = " CHECKED ";
+ } else {
+ $multiple_checked = " CHECKED ";
+ $single_checked = "";
+ }
+ $output .= &Apache::loncommon::continue_data_table_row();
+ $output .= ''.(' ' x 10).'
+
+ Student may select multiple choices from list ';
+ $output .= &Apache::loncommon::end_data_table_row();
+ $output .= &Apache::loncommon::continue_data_table_row();
+ $output .= ''.(' ' x 10).'
+
+ Student may select only one choice from list ';
+ $output .= &Apache::loncommon::end_data_table_row();
}
return ($output);
}
@@ -3268,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) {
@@ -3310,7 +3330,7 @@ sub addmetafield {
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
if (exists($env{'form.undelete'})) {
- my @meta_fields = &Apache::loncommon::get_env_multiple('form.undelete');
+ my @meta_fields = &Apache::loncommon::get_env_multiple('form.undeletefield');
foreach my $meta_field(@meta_fields) {
my $options = $env{'course.'.$env{'request.course.id'}.'.metadata.'.$meta_field.'.options'};
$options =~ s/deleted//;
@@ -3334,12 +3354,12 @@ 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('');
@@ -3373,7 +3393,10 @@ sub setrestrictmeta {
if ($env{'form.'.$meta_field.'_stuadd'}) {
$options.='stuadd,';
}
- if ($env{'form.'.$meta_field.'_onlyone'}) {
+ if ($env{'form.'.$meta_field.'_choices'}) {
+ $options.='choices,';
+ }
+ if ($env{'form.'.$meta_field.'_onlyone'} eq 'single') {
$options.='onlyone,';
}
if ($env{'form.'.$meta_field.'_active'}) {
@@ -3382,7 +3405,6 @@ sub setrestrictmeta {
if ($env{'form.'.$meta_field.'_deleted'}) {
$options.='deleted,';
}
-
my $name = $save_field;
$put_result = &Apache::lonnet::put('environment',
{'metadata.'.$meta_field.'.options'=>$options,
@@ -3397,7 +3419,7 @@ sub setrestrictmeta {
# Get the default metadata fields
my %metadata_fields = &Apache::lonmeta::fieldnames('portfolio');
# Now get possible added metadata fields
- my $added_metadata_fields = &get_added_meta_fieldnames(\%metadata_fields);
+ my $added_metadata_fields = &get_added_meta_fieldnames($env{'request.course.id'});
my $row_alt = 1;
$output .= &Apache::loncommon::start_data_table();
foreach my $field (sort(keys(%metadata_fields))) {
@@ -3406,6 +3428,16 @@ sub setrestrictmeta {
$output.= &output_row($r, $field, $metadata_fields{$field});
}
}
+ my $buttons = (<
+
+
+
+
-
-
-
ENDenv
$r->print(&Apache::loncommon::end_page());
@@ -3430,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;
@@ -3441,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};
@@ -3728,7 +3754,15 @@ sub parm_change_log {
}
if ($last) { ($folder) = &Apache::lonnet::decode_symb($last); }
}
- foreach my $id (sort { $parmlog{$b}{'exe_time'}<=>$parmlog{$a}{'exe_time'} } (keys(%parmlog))) {
+ 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 =
@@ -3836,6 +3870,12 @@ sub parm_change_log {
$r->print(&Apache::loncommon::end_page());
}
+sub check_for_course_info {
+ my $navmap = Apache::lonnavmaps::navmap->new();
+ return 1 if ($navmap);
+ return 0;
+}
+
##################################################
##################################################
@@ -3879,7 +3919,9 @@ sub handler {
(&Apache::lonnet::allowed('opa',$env{'request.course.id'}) ||
&Apache::lonnet::allowed('opa',$env{'request.course.id'}.'/'.
$env{'request.course.sec'}));
- if ($env{'request.course.id'} && $parm_permission) {
+ my $exists = &check_for_course_info();
+
+ if ($env{'request.course.id'} && $parm_permission && $exists) {
# Start Page
&Apache::loncommon::content_type($r,'text/html');
@@ -3949,8 +3991,13 @@ sub handler {
}
} else {
# ----------------------------- Not in a course, or not allowed to modify parms
- $env{'user.error.msg'}=
- "/adm/parmset:opa:0:0:Cannot modify assessment parameters";
+ if ($exists) {
+ $env{'user.error.msg'}=
+ "/adm/parmset:opa:0:0:Cannot modify assessment parameters";
+ } else {
+ $env{'user.error.msg'}=
+ "/adm/parmset::0:1:Course environment gone, reinitialize the course";
+ }
return HTTP_NOT_ACCEPTABLE;
}
return OK;