--- loncom/interface/lonmeta.pm 2005/11/22 23:20:40 1.133 +++ loncom/interface/lonmeta.pm 2005/12/19 16:00:05 1.140 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Metadata display handler # -# $Id: lonmeta.pm,v 1.133 2005/11/22 23:20:40 banghart Exp $ +# $Id: lonmeta.pm,v 1.140 2005/12/19 16:00:05 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -289,10 +289,30 @@ sub fieldnames { } return &Apache::lonlocal::texthash(%fields); } - +sub pre_select_course { + my ($r,$uri) = @_; + my $output; + my $fn=&Apache::lonnet::filelocation('',$uri); + my $disuri=$uri; + %Apache::lonpublisher::metadatafields=(); + %Apache::lonpublisher::metadatakeys=(); + my $result=&Apache::lonnet::getfile($fn); + if ($result == -1){ + $r->print('Creating new '.$disuri); + } else { + &Apache::lonpublisher::metaeval($result); + } + $r->print('<form method="post" action="" >'); + $output = &select_course(); + $r->print($output.'<br /><input type="submit" name="store" value="'. + &mt('Select Metadata Course Restrictions').'">'); + $r->print('</form>'); + return; +} sub select_course { - my ($r)=@_; my %courses; + my $output; + my $selected; foreach my $key (keys (%env)) { if ($key =~ m/\.metadata\./) { $key =~ m/^course\.(.+)(\.metadata.+$)/; @@ -302,30 +322,28 @@ sub select_course { $courses{$coursekey} = $value; } } - $r->print('<h3>Course Related Meta-Data</h3><br />'); - $r->print('<form action="" method="post">'); - $r->print('Select course restrictions<br />'); - $r->print('<select name="metacourse" >'); + &Apache::lonnet::logthis('the restricted is'.$Apache::lonpublisher::metadatafields{'courserestricted'}); my $meta_not_found = 1; + if ($Apache::lonpublisher::metadatafields{'courserestricted'} eq 'none') { + $selected = ' SELECTED '; + } else { + $selected = ''; + } + $output .= '<select name="new_courserestricted" >'; + $output .= '<option value="none" '.$selected.'>None</option>'; foreach my $key (keys (%courses)) { - if ($meta_not_found) { - undef($meta_not_found); - $r->print('<h3>Portfolio Meta-Data</h3><br />'); - $r->print('<form action="" method="post">'); - $r->print('Select your course<br />'); - $r->print('<select name="metacourse" >'); - } $key =~ m/(^.+)\.description$/; - $r->print('<option value="'.$1.'">'); - $r->print($courses{$key}); - $r->print('</option>'); - } - unless ($meta_not_found) { - $r->print('</select><br />'); - $r->print('<input type="submit" value="Assign Portfolio Metadata" />'); - $r->print('</form>'); + if ($Apache::lonpublisher::metadatafields{'courserestricted'} eq $1) { + $selected = ' SELECTED '; + } else { + $selected = ''; + } + $output .= '<option value="'.$1.'"'.$selected.'>'; + $output .= $courses{$key}; + $output .= '</option>'; } - return 'ok'; + $output .= '</select><br />'; + return ($output); } # Pretty printing of metadata field @@ -516,14 +534,15 @@ sub prettyinput { $cur_values_stu = $value; } if ($type eq 'courserestricted') { - return ('<input type="hidden" name="new_courserestricted" value="'.$course_key.'" />'); + return (&select_course()); + # return ('<input type="hidden" name="new_courserestricted" value="'.$course_key.'" />'); } if (($type eq 'keywords') || ($type eq 'subject') || ($type eq 'author')||($type eq 'notes') || ($type eq 'abstract')|| ($type eq 'title')|| ($type eq 'standards')) { if ($values) { if ($only_one) { - $output .= (&Apache::loncommon::select_form($value,'new_'.$type,%meta_options)); + $output .= (&Apache::loncommon::select_form($cur_values_inst[0],'new_'.$type,%meta_options)); } else { $output .= (&Apache::loncommon::multiple_select_form('new_'.$type,\@cur_values_inst,undef,\%meta_options)); } @@ -603,6 +622,11 @@ sub prettyinput { ",'rights')\">".&mt('Select').'</a>'. &relatedfield(0,$relatedsearchflag,$relatedsep); } + if ($type eq 'courserestricted') { + return (&select_course()); + #return ('<input type="hidden" name="new_courserestricted" value="'.$course_key.'" />'); + } + # Dates if (($type eq 'creationdate') || ($type eq 'lastrevisiondate')) { @@ -644,12 +668,15 @@ sub handler { # Looking for all bombs? &report_bombs($r,$uri); } elsif ($uri=~/\/portfolio\//) { - ($resdomain,$resuser)= + ($resdomain,$resuser)= (&Apache::lonnet::declutter($uri)=~m|^(\w+)/(\w+)/portfolio|); $r->print(&Apache::loncommon::bodytag ('Edit Portfolio File Information','','','',$resdomain)); - &present_editable_metadata($r,$uri,'portfolio'); - &select_course($r); + if ($env{'form.store'}) { + &present_editable_metadata($r,$uri,'portfolio'); + } else { + &pre_select_course($r,$uri); + } } elsif ($uri=~/^\/\~/) { # Construction space $r->print(&Apache::loncommon::bodytag @@ -1071,7 +1098,7 @@ ENDEDIT my @fields; if ($file_type eq 'portfolio') { @fields = ('author','title','subject','keywords','abstract','notes','lowestgradelevel', - 'highestgradelevel','standards','courserestricted'); + 'highestgradelevel','standards'); } else { @fields = ('author','title','subject','keywords','abstract','notes', 'copyright','customdistributionfile','language', @@ -1079,25 +1106,23 @@ ENDEDIT 'lowestgradelevel','highestgradelevel','sourceavail','sourcerights', 'obsolete','obsoletereplacement'); } - my $metacourse; - 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'}) && + (! $env{'form.new_courserestricted'})) { + $Apache::lonpublisher::metadatafields{'courserestricted'}= + 'none'; + } elsif ($env{'form.new_courserestricted'}) { + $Apache::lonpublisher::metadatafields{'courserestricted'}= + $env{'form.new_courserestricted'}; + } if (! $Apache::lonpublisher::metadatafields{'copyright'}) { $Apache::lonpublisher::metadatafields{'copyright'}= 'default'; } - if ($metacourse ne 'none') { - $r->print('Document metadata restricted by :<strong> '.$env{$metacourse.".description"}."</strong><br />"); + if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') { + $r->print('Using: <strong> '.$env{$Apache::lonpublisher::metadatafields{'courserestricted'}.".description"}. + "</strong> metadata framework<br />"); + } else { + $r->print("This resource is not associated with a metadata framework<br />"); } foreach my $field_name(@fields) { @@ -1105,33 +1130,33 @@ 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.=('<p>'.$lt{$field_name}.': '. &prettyinput($field_name, $Apache::lonpublisher::metadatafields{$field_name}, - 'new_'.$field_name,'defaultmeta',undef,undef,undef,undef,$metacourse).'</p>'); - } 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'}).'</p>'); } } else { - if ($field_name ne 'courserestricted') { + $output.=('<p>'.$lt{$field_name}.': '. &prettyinput($field_name, $Apache::lonpublisher::metadatafields{$field_name}, 'new_'.$field_name,'defaultmeta').'</p>'); - } else { - $output.=&prettyinput($field_name, - $Apache::lonpublisher::metadatafields{$field_name}, - 'new_'.$field_name,'defaultmeta'); - } + } } - if ($env{'form.store'}) { + + $r->print($output.'<br /><input type="submit" name="store" value="'. + &mt('Store Catalog Information').'">'); + + } + $r->print('</form>'); + if ($env{'form.store'}) { my $mfh; my $formname='store'; my $file_content; @@ -1152,7 +1177,7 @@ ENDEDIT $Apache::lonpublisher::metadatakeys{$unikey}) ) { my $value= - $Apache::lonpublisher::metadatafields{$unikey.'.'.$_}; + $Apache::lonpublisher::metadatafields{$unikey.'.'.$_}; $value=~s/\"/\'\'/g; $file_content.=' '.$_.'="'.$value.'"' ; # print $mfh ' '.$_.'="'.$value.'"'; @@ -1166,7 +1191,7 @@ ENDEDIT if ($fn =~ /\/portfolio\//) { $fn =~ /\/portfolio\/(.*)$/; my $new_fn = '/'.$1; - $env{'form.'.$formname}=$file_content; + $env{'form.'.$formname}=$file_content."\n"; $env{'form.'.$formname.'.filename'}=$new_fn; &Apache::lonnet::userfileupload('uploaddoc','', 'portfolio'.$env{'form.currentpath'}); @@ -1192,10 +1217,6 @@ ENDEDIT } } } - $r->print($output.'<br /><input type="submit" name="store" value="'. - &mt('Store Catalog Information').'">'); - } - $r->print('</form>'); return; }