--- loncom/interface/lonmeta.pm 2005/12/19 21:13:45 1.143 +++ loncom/interface/lonmeta.pm 2006/01/04 05:43:19 1.150 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Metadata display handler # -# $Id: lonmeta.pm,v 1.143 2005/12/19 21:13:45 albertel Exp $ +# $Id: lonmeta.pm,v 1.150 2006/01/04 05:43:19 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -248,8 +248,13 @@ sub fieldnames { 'notes' => 'Notes', 'abstract' => 'Abstract', 'lowestgradelevel' => 'Lowest Grade Level', - 'highestgradelevel' => 'Highest Grade Level', - 'courserestricted' => 'Course Restricting Metadata'); + 'highestgradelevel' => 'Highest Grade Level'); + + if (! defined($file_type) || $file_type ne 'portfolio') { + %fields = + (%fields, + 'courserestricted' => 'Course Restricting Metadata'); + } if (! defined($file_type) || $file_type ne 'portfolio') { %fields = @@ -290,9 +295,24 @@ sub fieldnames { return &Apache::lonlocal::texthash(%fields); } +sub portfolio_linked_path { + my ($path) = @_; + my $result = &Apache::portfolio::make_anchor('portfolio','/'); + my $fullpath = '/'; + my (undef,@tree) = split('/',$path); + my $filename = pop(@tree); + foreach my $dir (@tree) { + $fullpath .= $dir.'/'; + $result .= '/'; + $result .= &Apache::portfolio::make_anchor($dir,$fullpath); + } + $result .= "/$filename"; + return $result; +} + sub portfolio_display_uri { - my ($uri)=@_; - $uri =~ s|.*/portfolio(/.*)$|$1|; + my ($uri,$as_links)=@_; + $uri =~ s|.*/(portfolio/.*)$|$1|; my ($res_uri,$meta_uri) = ($uri,$uri); if ($uri =~ /\.meta$/) { @@ -300,14 +320,21 @@ sub portfolio_display_uri { } else { $meta_uri .= '.meta'; } - return ($res_uri,$meta_uri); + + my ($path) = ($res_uri =~ m|^portfolio(.*/)[^/]*$|); + + if ($as_links) { + $res_uri = &portfolio_linked_path($res_uri); + $meta_uri = &portfolio_linked_path($meta_uri); + } + return ($res_uri,$meta_uri,$path); } sub pre_select_course { my ($r,$uri) = @_; my $output; my $fn=&Apache::lonnet::filelocation('',$uri); - my ($res_uri,$meta_uri) = &portfolio_display_uri($uri); + my ($res_uri,$meta_uri,$path) = &portfolio_display_uri($uri); %Apache::lonpublisher::metadatafields=(); %Apache::lonpublisher::metadatakeys=(); my $result=&Apache::lonnet::getfile($fn); @@ -322,40 +349,40 @@ sub pre_select_course { $r->print($output.'
'); $r->print(''); + + $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.+$)/; - my $course = $1; - my $coursekey = 'course.'.$course.'.description'; - my $value = $env{$coursekey}; - $courses{$coursekey} = $value; - } - } - &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 = ''; - } + my $output=$/; + my $current_restriction= + $Apache::lonpublisher::metadatafields{'courserestricted'}; + my $selected = ($current_restriction eq 'none' ? 'selected="selected"' + : ''); + $output .= '
'; return ($output); @@ -517,7 +544,8 @@ sub prettyinput { $size = 80; } my $output; - if (defined($course_key)) { + if (defined($course_key) + && exists($env{$course_key.'.metadata.'.$type.'.options'})) { my $stu_add; my $only_one; my %meta_options; @@ -1044,8 +1072,9 @@ sub present_editable_metadata { $disuri=~s/^\/\~/\/priv\//; $disuri=~s/\.meta$//; my $meta_uri = $disuri; + my $path; if ($disuri =~ m|/portfolio/|) { - ($disuri, $meta_uri) = &portfolio_display_uri($disuri); + ($disuri, $meta_uri, $path) = &portfolio_display_uri($disuri,1); } my $target=$uri; $target=~s/^\/\~/\/res\/$env{'request.role.domain'}\//; @@ -1136,19 +1165,22 @@ ENDEDIT $Apache::lonpublisher::metadatafields{'copyright'}= 'default'; } - if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') { - $r->print(&mt('Associated with course [_1]',''.$env{$Apache::lonpublisher::metadatafields{'courserestricted'}.".description"}. - '').'
'); - } else { - $r->print("This resource is not associated with a course.
"); - } + if ($file_type eq 'portfolio') { + if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') { + $r->print(&mt('Associated with course [_1]',''.$env{$Apache::lonpublisher::metadatafields{'courserestricted'}.".description"}. + '').'
'); + } else { + $r->print("This resource is not associated with a course.
"); + } + } foreach my $field_name (@fields) { if (defined($env{'form.new_'.$field_name})) { $Apache::lonpublisher::metadatafields{$field_name}= join(',',&Apache::loncommon::get_env_multiple('form.new_'.$field_name)); } - if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') { + if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none' + && exists($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'})) { # handle restrictions here if (($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'} =~ m/active/) || ($field_name eq 'courserestricted')){ @@ -1199,7 +1231,6 @@ ENDEDIT '<>&"'). ''; } - &Apache::lonnet::logthis(" file ".$file_content); if ($fn =~ m|/portfolio/|) { my ($path, $new_fn) = ($fn =~ m|/(portfolio.*)/([^/]*)$|); $env{'form.'.$formname}=$file_content."\n"; @@ -1232,8 +1263,15 @@ ENDEDIT $r->print($output.'
'); - + + if ($file_type eq 'portfolio') { + $r->print(' +

'. + ''. + ''); + } } + $r->print('
'); return;