--- loncom/interface/lonmeta.pm 2005/12/19 21:49:12 1.146 +++ loncom/interface/lonmeta.pm 2006/05/30 12:46:09 1.157 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Metadata display handler # -# $Id: lonmeta.pm,v 1.146 2005/12/19 21:49:12 albertel Exp $ +# $Id: lonmeta.pm,v 1.157 2006/05/30 12:46:09 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -39,6 +39,8 @@ use Apache::lonpublisher; use Apache::lonlocal; use Apache::lonmysql; use Apache::lonmsg; +use lib '/home/httpd/lib/perl/'; +use LONCAPA; ############################################################ @@ -71,7 +73,7 @@ sub get_dynamic_metadata_from_sql { if (! defined($authordom) || ! defined($author)) { return (); } - my @Fields = ('url','count','course', + my @Fields = ('url','count','course','course_list', 'goto','goto_list', 'comefrom','comefrom_list', 'sequsage','sequsage_list', @@ -108,7 +110,7 @@ sub get_dynamic_metadata_from_sql { next if (! $result); my @Data = map { - &Apache::lonnet::unescape($_); + &unescape($_); } split(',',$result); my $url = $Data[0]; for (my $i=0;$i<=$#Fields;$i++) { @@ -248,8 +250,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 = @@ -291,34 +298,61 @@ sub fieldnames { } sub portfolio_linked_path { - my ($path) = @_; - my $result = &Apache::portfolio::make_anchor('portfolio','/'); + my ($path,$group,$port_path) = @_; + + my $start = 'portfolio'; + if ($group) { + $start = "groups/$group/".$start; + } + my $result = &Apache::portfolio::make_anchor($port_path,$start,'/', + undef,undef,undef,$group); + 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 .= &Apache::portfolio::make_anchor($port_path,$dir,$fullpath, + undef,undef,undef,$group); } + $result .= "/$filename"; return $result; } +sub get_port_path_and_group { + my ($uri)=@_; + + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + + my ($port_path,$group); + if ($uri =~ m{^/editupload/\Q$cdom\E/\Q$cnum\E/groups/}) { + $group = (split('/',$uri))[5]; + $port_path = '/adm/coursegrp_portfolio'; + } else { + $port_path = '/adm/portfolio'; + } + return ($port_path,$group); +} + sub portfolio_display_uri { my ($uri,$as_links)=@_; + + my ($port_path,$group) = &get_port_path_and_group($uri); + $uri =~ s|.*/(portfolio/.*)$|$1|; my ($res_uri,$meta_uri) = ($uri,$uri); - if ($uri =~ /\.meta$/) { $res_uri =~ s/\.meta//; } else { $meta_uri .= '.meta'; } - my ($path) = ($res_uri =~ m|(.*)/[^/]*$|); - + my ($path) = ($res_uri =~ m|^portfolio(.*/)[^/]*$|); if ($as_links) { - $res_uri = &portfolio_linked_path($res_uri); - $meta_uri = &portfolio_linked_path($meta_uri); + $res_uri = &portfolio_linked_path($res_uri,$group,$port_path); + $meta_uri = &portfolio_linked_path($meta_uri,$group,$port_path); } return ($res_uri,$meta_uri,$path); } @@ -343,44 +377,41 @@ sub pre_select_course { &mt('Associate Resource With Selected Course').'">'); $r->print(''); - $r->print('

'. + my ($port_path,$group) = &get_port_path_and_group($uri); + $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; - } - } - 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); @@ -445,7 +476,7 @@ sub prettyprint { ($type eq 'comefrom_list') || ($type eq 'sequsage_list') || ($type eq 'dependencies')) { - return '