--- loncom/interface/lonparmset.pm 2006/09/07 21:57:52 1.334 +++ loncom/interface/lonparmset.pm 2006/09/27 23:30:12 1.337 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.334 2006/09/07 21:57:52 banghart Exp $ +# $Id: lonparmset.pm,v 1.337 2006/09/27 23:30:12 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1514,7 +1514,7 @@ sub assessparms { $message="\n
\n".&mt("Full Name").": ".
$name{'firstname'}.' '.$name{'middlename'}.' '
.$name{'lastname'}.' '.$name{'generation'}.
- "
\n".&mt('ID').": ".$name{'id'}.'
';
+ "
\n".&mt('ID').": ".$name{'id'}.'
';
}
@usersgroups = &Apache::lonnet::get_users_groups(
$udom,$uname,$env{'request.course.id'});
@@ -1562,7 +1562,7 @@ sub assessparms {
foreach ('tolerance','date_default','date_start','date_end',
'date_interval','int','float','string') {
$r->print('');
+ $env{'form.recent_'.$_}.'" name="recent_'.$_.'" />');
}
if (!$pssymb) {
@@ -1639,7 +1639,7 @@ sub assessparms {
);
$r->print(<
@@ -3284,7 +3308,18 @@ ENDenv
return 'ok';
}
##################################################
-
+sub get_added_meta_fieldnames {
+ my %fields;
+ my ($default_fields) = @_;
+ foreach my $key(%env) {
+ if ($key =~ m/\.metadata\.(.+)\.added$/) {
+ my $field_name = $1;
+ my ($display_field_name) = $env{$key};
+ $fields{$field_name} = $display_field_name;
+ }
+ }
+ return \%fields;
+}
sub defaultsetter {
my ($r) = @_;
$lt{'csv'}
+
($csuname $lt{'at'} $csudom)$lt{'csv'}
($csuname $lt{'at'} $csudom)$lt{'ic'} $lt{'rl'}
$lt{'ic'}
@@ -1740,8 +1740,8 @@ ENDTABLEHEADFOUR
"$title");
+ "', 'metadatafile', '450', '500', 'no', 'yes');\"".
+ " target=\"_self\">$title");
if ($thistitle) {
$r->print(' ('.$thistitle.')');
@@ -2005,7 +2005,7 @@ sub crsenv {
('environment',
{'top level map backup '.$bkuptime => $tmp[1] },
$dom,$crs).
- '
';
+ '
';
}
#
# Deal with modified default spreadsheets
@@ -2116,7 +2116,7 @@ sub crsenv {
'default_xml_style' => ''.&mt('Default XML Style File').' '.
'$SelectStyleFile
",
+ ",'sty')\">$SelectStyleFile
",
'question.email' => ''.&mt('Feedback Addresses for Resource Content Question').
'
(user:domain,'.
'user:domain(section;section;...;*;...),...)',
@@ -3188,25 +3188,30 @@ ENDMAINFORMHEAD
}
### Set portfolio metadata
sub output_row {
- my ($r, $field_name, $field_text) = @_;
+ my ($r, $field_name, $field_text, $added_flag) = @_;
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'};
- unless (defined($options)) {
+ if (!defined($options)) {
$options = 'active,stuadd';
$values = '';
}
- $output.=''.$field_text.':';
- $output.='
';
+ if (!($options =~ /deleted/)) {
+ $output.=''.$field_text.':';
+ $output.='
';
- my @options= ( ['active', 'Show to student'],
+ my @options= ( ['active', 'Show to student'],
['onlyone','Student may select only one choice'],
['stuadd', 'Student may type choices']);
- foreach my $opt (@options) {
- my $checked = ($options =~ m/$opt->[0]/) ? ' checked="checked" ' : '' ;
- $output.=(' 'x5).'
';
+ if ($added_flag) {
+ push @options,['deleted', 'Delete Metadata Field'];
+ }
+ foreach my $opt (@options) {
+ my $checked = ($options =~ m/$opt->[0]/) ? ' checked="checked" ' : '' ;
+ $output.=(' 'x5).'
';
+ }
}
return ($output);
}
@@ -3214,13 +3219,23 @@ sub addmetafield {
my ($r)=@_;
$r->print(&Apache::loncommon::start_page('Add Metadata Field'));
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Add Metadata Field'));
+ my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
if (exists($env{'form.fieldname'})) {
- $r->print('Here is a field');
+ my $meta_field = $env{'form.fieldname'};
+ my $display_field = $env{'form.fieldname'};
+ $meta_field =~ s/\W/_/g;
+ my $put_result = &Apache::lonnet::put('environment',
+ {'metadata.'.$meta_field.'.values'=>"",
+ 'metadata.'.$meta_field.'.added'=>"$display_field",
+ 'metadata.'.$meta_field.'.options'=>""},$dom,$crs);
+ $r->print('Added new Metadata Field '.$env{'form.fieldname'}." with result ".$put_result);
+ } else {
+ $r->print('');
}
- $r->print('');
}
sub setrestrictmeta {
my ($r)=@_;
@@ -3228,7 +3243,6 @@ sub setrestrictmeta {
my $output;
my $item_num;
my $put_result;
- &Apache::lonnet::logthis("restricting metadata");
$r->print(&Apache::loncommon::start_page('Restrict Metadata'));
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata'));
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
@@ -3252,6 +3266,10 @@ sub setrestrictmeta {
if ($env{'form.'.$meta_field.'_active'}) {
$options.='active,';
}
+ if ($env{'form.'.$meta_field.'_deleted'}) {
+ $options.='deleted,';
+ }
+
my $name = $save_field;
$put_result = &Apache::lonnet::put('environment',
{'metadata.'.$meta_field.'.options'=>$options,
@@ -3263,13 +3281,19 @@ sub setrestrictmeta {
}
&Apache::lonnet::coursedescription($env{'request.course.id'},
{'freshen_cache' => 1});
+ # 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);
foreach my $field (sort(keys(%metadata_fields))) {
- &Apache::lonnet::logthis ($field);
if ($field ne 'courserestricted') {
$output.= &output_row($r, $field, $metadata_fields{$field});
}
}
+ my $added_flag = 1;
+ foreach my $field (sort(keys(%$added_metadata_fields))) {
+ $output.= &output_row($r, $field, $$added_metadata_fields{$field},$added_flag);
+ }
$r->print(<