--- loncom/interface/lonmeta.pm 2005/12/13 11:52:37 1.137 +++ loncom/interface/lonmeta.pm 2005/12/14 00:12:13 1.138 @@ -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.138 2005/12/14 00:12:13 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -293,6 +293,7 @@ sub fieldnames { sub select_course { my %courses; my $output; + my $selected; foreach my $key (keys (%env)) { if ($key =~ m/\.metadata\./) { $key =~ m/^course\.(.+)(\.metadata.+$)/; @@ -302,29 +303,26 @@ sub select_course { $courses{$coursekey} = $value; } } - $output = '

Associate resource with a course


'; - $output .= '
'; - $output .= 'Select course
'; - $output .= ''; + $output .= ''; foreach my $key (keys (%courses)) { - if ($meta_not_found) { - undef($meta_not_found); - $output .= '

Portfolio Meta-Data


'; - $output .= ''; - $output .= 'Select your course
'; - $output .= '
'; - $output .= ''; - $output .= '
'; - } + $output .= '
'; return ($output); } # Pretty printing of metadata field @@ -516,7 +514,8 @@ sub prettyinput { $cur_values_stu = $value; } if ($type eq 'courserestricted') { - return (''); + return (&select_course()); + # return (''); } if (($type eq 'keywords') || ($type eq 'subject') || ($type eq 'author')||($type eq 'notes') @@ -604,7 +603,8 @@ sub prettyinput { &relatedfield(0,$relatedsearchflag,$relatedsep); } if ($type eq 'courserestricted') { - return (''); + return (&select_course()); + #return (''); } # Dates @@ -1002,7 +1002,6 @@ sub present_editable_metadata { # Header my $disuri=$uri; my $fn=&Apache::lonnet::filelocation('',$uri); - my $metacourse; $disuri=~s/^\/\~/\/priv\//; $disuri=~s/\.meta$//; $disuri=~s|^/editupload||; @@ -1047,6 +1046,67 @@ ENDDEL } $r->print('
'.$bombs); } else { + 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}, + '<>&"'). + ''; + } + 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). + '

'); + } + } + } my $displayfile='Catalog Information for '.$disuri; if ($disuri=~/\/default$/) { my $dir=$disuri; @@ -1083,27 +1143,19 @@ ENDEDIT 'lowestgradelevel','highestgradelevel','sourceavail','sourcerights', 'obsolete','obsoletereplacement'); } - if ($env{'form.metacourse'} ) { - $Apache::lonpublisher::metadatafields{'courserestricted'} = $env{'form.metacourse'}; - $metacourse = $env{'form.metacourse'}; - } else { - if (! $Apache::lonpublisher::metadatafields{'courserestricted'}) { - $Apache::lonpublisher::metadatafields{'courserestricted'}= - 'none'; - $metacourse = 'none'; - } else { - $metacourse = $Apache::lonpublisher::metadatafields{'courserestricted'}; - } - } + if (! $Apache::lonpublisher::metadatafields{'courserestricted'}) { + $Apache::lonpublisher::metadatafields{'courserestricted'}= + 'none'; + } if (! $Apache::lonpublisher::metadatafields{'copyright'}) { $Apache::lonpublisher::metadatafields{'copyright'}= 'default'; } - if ($metacourse ne 'none') { - $r->print('Using: '.$env{$metacourse.".description"}. + if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') { + $r->print('Using: '.$env{$Apache::lonpublisher::metadatafields{'courserestricted'}.".description"}. " metadata framework
"); } else { - $r->print("This resources is not associated with a metadata framework
"); + $r->print("This resource is not associated with a metadata framework
"); } foreach my $field_name(@fields) { @@ -1111,102 +1163,32 @@ ENDEDIT $Apache::lonpublisher::metadatafields{$field_name}= join(',',&Apache::loncommon::get_env_multiple('form.new_'.$field_name)); } - if ($metacourse ne 'none') { + if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') { # handle restrictions here - if ($env{$metacourse.'.metadata.'.$field_name.'.options'} =~ m/active/){ + if (($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'} =~ m/active/) || + ($field_name eq 'courserestricted')){ $output.=('

'.$lt{$field_name}.': '. &prettyinput($field_name, $Apache::lonpublisher::metadatafields{$field_name}, - 'new_'.$field_name,'defaultmeta',undef,undef,undef,undef,$metacourse).'

'); - } elsif ($field_name eq 'courserestricted') { - $output.=( - &prettyinput($field_name, - $Apache::lonpublisher::metadatafields{$field_name}, - 'new_'.$field_name,'defaultmeta',undef,undef,undef,undef,$metacourse)); + 'new_'.$field_name,'defaultmeta', + undef,undef,undef,undef, + $Apache::lonpublisher::metadatafields{'courserestricted'}).'

'); } } else { - if ($field_name ne 'courserestricted') { + $output.=('

'.$lt{$field_name}.': '. &prettyinput($field_name, $Apache::lonpublisher::metadatafields{$field_name}, 'new_'.$field_name,'defaultmeta').'

'); - } else { - $output.=&prettyinput($field_name, - $Apache::lonpublisher::metadatafields{$field_name}, - 'new_'.$field_name,'defaultmeta'); - } + } } - 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}, - '<>&"'). - ''; - } - 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). - '

'); - } - } - } $r->print($output.'
'); } $r->print(''); - if ($metacourse eq 'none') { - $r->print(&select_course()); - } return; }