--- loncom/interface/lonmeta.pm 2005/12/13 11:52:37 1.137
+++ loncom/interface/lonmeta.pm 2005/12/19 20:08:40 1.142
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Metadata display handler
#
-# $Id: lonmeta.pm,v 1.137 2005/12/13 11:52:37 banghart Exp $
+# $Id: lonmeta.pm,v 1.142 2005/12/19 20:08:40 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -290,9 +290,44 @@ sub fieldnames {
return &Apache::lonlocal::texthash(%fields);
}
+sub portfolio_display_uri {
+ my ($uri)=@_;
+ $uri =~ s|.*/portfolio(/.*)$|$1|;
+ my ($res_uri,$meta_uri) = ($uri,$uri);
+
+ if ($uri =~ /\.meta$/) {
+ $res_uri =~ s/\.meta//;
+ } else {
+ $meta_uri .= '.meta';
+ }
+ return ($res_uri,$meta_uri);
+}
+
+sub pre_select_course {
+ my ($r,$uri) = @_;
+ my $output;
+ my $fn=&Apache::lonnet::filelocation('',$uri);
+ my ($res_uri,$meta_uri) = &portfolio_display_uri($uri);
+ %Apache::lonpublisher::metadatafields=();
+ %Apache::lonpublisher::metadatakeys=();
+ my $result=&Apache::lonnet::getfile($fn);
+ if ($result == -1){
+ $r->print(&mt('Creating new file [_1]'),$meta_uri);
+ } else {
+ &Apache::lonpublisher::metaeval($result);
+ }
+ $r->print('
');
+ return;
+}
sub select_course {
my %courses;
my $output;
+ my $selected;
foreach my $key (keys (%env)) {
if ($key =~ m/\.metadata\./) {
$key =~ m/^course\.(.+)(\.metadata.+$)/;
@@ -302,29 +337,27 @@ sub select_course {
$courses{$coursekey} = $value;
}
}
- $output = 'Associate resource with a course
';
- $output .= '');
- if ($metacourse eq 'none') {
- $r->print(&select_course());
+
+ if ($env{'form.store'}) {
+ my $mfh;
+ my $formname='store';
+ my $file_content;
+ foreach my $meta_field (keys %env) {
+ if (&Apache::loncommon::get_env_multiple('form.new_keywords')) {
+ $Apache::lonpublisher::metadatafields{'keywords'} =
+ join (',', &Apache::loncommon::get_env_multiple('form.new_keywords'));
+ }
+ }
+ 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.'>';
+ }
+ if ($fn =~ /\/portfolio\//) {
+ $fn =~ /\/portfolio\/(.*)$/;
+ my $new_fn = '/'.$1;
+ $env{'form.'.$formname}=$file_content."\n";
+ $env{'form.'.$formname.'.filename'}=$new_fn;
+ &Apache::lonnet::userfileupload('uploaddoc','',
+ 'portfolio'.$env{'form.currentpath'});
+ 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).
+ '
');
+ }
+ } else {
+ if (! ($mfh=Apache::File->new('>'.$fn))) {
+ $r->print(''.
+ &mt('Could not write metadata').', '.
+ &mt('FAIL').'
');
+ } else {
+ print $mfh $file_content;
+ $r->print(''.&mt('Wrote Metadata').
+ ' '.&Apache::lonlocal::locallocaltime(time).
+ '
');
+ }
+ }
}
+
return;
}