--- loncom/interface/lonmeta.pm 2005/08/02 17:01:20 1.101
+++ loncom/interface/lonmeta.pm 2005/08/13 19:32:28 1.105
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Metadata display handler
#
-# $Id: lonmeta.pm,v 1.101 2005/08/02 17:01:20 banghart Exp $
+# $Id: lonmeta.pm,v 1.105 2005/08/13 19:32:28 banghart Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -292,24 +292,30 @@ sub select_course {
my ($r)=@_;
$r->print('
Instructor Selected Meta-Data
');
$r->print('');
-
- foreach my $key (keys %env) {
-
+ my $meta_not_found = 1;
+ foreach my $key (keys %env) {
if ($key =~ /\.metadata\./) {
+ if ($meta_not_found) {
+ undef($meta_not_found);
+ $r->print('Instructor Selected Meta-Data
');
+ $r->print('');
+ unless ($meta_not_found) {
+ $r->print('
');
+ $r->print('');
+ $r->print('');
+ }
return 'ok';
}
# Pretty printing of metadata field
@@ -571,8 +577,16 @@ sub handler {
} elsif ($uri=~/\/portfolio\//) {
$r->print(&Apache::loncommon::bodytag
('Edit Portfolio File Information','','','',$resdomain));
- &present_editable_metadata($r,$uri,'portfolio');
- &select_course($r);
+ if ($env{'form.metacourse'}) {
+ &present_instructor_metadata($r,$uri,'portfolio');
+ }
+ elsif ($env{'form.keywords'}) {
+ &save_instructor_metadata($r);
+ &select_course($r);
+ } else {
+ &present_editable_metadata($r,$uri,'portfolio');
+ &select_course($r);
+ }
} elsif ($uri=~/^\/\~/) {
# Construction space
@@ -907,6 +921,81 @@ sub print_dynamic_metadata {
$r->print("");
return;
}
+sub save_instructor_metadata {
+ my ($r) = @_;
+ my $uri=$r->uri;
+ my $fn=&Apache::lonnet::filelocation('',$uri);
+ my @words = &Apache::loncommon::get_env_multiple('form.keywords');
+ $r->print('This is the save instructor metadata area
');
+ my $mfh;
+ my $formname='store';
+ my $file_content;
+ foreach (sort keys %Apache::lonpublisher::metadatafields) {
+ next if ($_ =~ /\./);
+ my $unikey=$_;
+ $unikey=~/^([A-Za-z]+)/;
+ my $tag=$1;
+ $tag=~tr/A-Z/a-z/;
+ $file_content.= "\n\<$tag";
+ foreach (split(/\,/,
+ $Apache::lonpublisher::metadatakeys{$unikey})
+ ) {
+ my $value=$Apache::lonpublisher::metadatafields{$unikey.'.'.$_};
+ $value=~s/\"/\'\'/g;
+ $file_content.=' '.$_.'="'.$value.'"' ;
+ # print $mfh ' '.$_.'="'.$value.'"';
+ }
+ $file_content.= '>'.
+ &HTML::Entities::encode
+ ($Apache::lonpublisher::metadatafields{$unikey},
+ '<>&"').
+ ''.$tag.'>';
+ }
+
+ foreach my $word (@words) {
+ $r->print('You entered:'.$word.'
');
+ }
+ my $tag = 'keywords';
+ $file_content.= "\n\<$tag";
+ $file_content.= '>'.
+ &HTML::Entities::encode
+ (join(', ',@words),
+ '<>&"').
+ '';
+ $fn =~ /\/portfolio\/(.*)$/;
+ my $new_fn = '/'.$1;
+ $env{'form.'.$formname}=$file_content;
+ $env{'form.'.$formname.'.filename'}=$new_fn;
+ &Apache::lonnet::userfileupload('uploaddoc','',
+ 'portfolio'.$env{'form.currentpath'});
+ my $status =&Apache::lonnet::userfileupload($formname,'','portfolio');
+ if (&Apache::lonnet::userfileupload($formname,'','portfolio') eq 'error: no uploaded file') {
+ $r->print(''.
+ &mt('Could not write metadata').', '.
+ &mt('FAIL').'
');
+ } else {
+ $r->print(''.&mt('Wrote Metadata').
+ ' '.&Apache::lonlocal::locallocaltime(time).
+ '
');
+ }
+ return 'ok';
+}
+sub present_instructor_metadata {
+ my ($r,$uri, $file_type) = @_;
+ $r->print('This is the instructor metadata area
');
+ my @keywords = sort(split /, /,$env{$env{'form.metacourse'}.'.metadata.keywords'});
+ $r->print($env{'form.metacourse'}.'
');
+ $r->print('');
+ return 'ok';
+}
+
#####################################################
#####################################################