--- loncom/interface/lonmeta.pm 2006/03/16 22:12:17 1.153 +++ loncom/interface/lonmeta.pm 2006/07/19 15:31:05 1.160 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Metadata display handler # -# $Id: lonmeta.pm,v 1.153 2006/03/16 22:12:17 albertel Exp $ +# $Id: lonmeta.pm,v 1.160 2006/07/19 15:31:05 albertel 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,20 +73,7 @@ sub get_dynamic_metadata_from_sql { if (! defined($authordom) || ! defined($author)) { return (); } - my @Fields = ('url','count','course','course_list', - 'goto','goto_list', - 'comefrom','comefrom_list', - 'sequsage','sequsage_list', - 'stdno','stdno_list', - 'dependencies', - 'avetries','avetries_list', - 'difficulty','difficulty_list', - 'disc','disc_list', - 'clear','technical','correct', - 'helpful','depth'); - # - my $query = 'SELECT '.join(',',@Fields). - ' FROM metadata WHERE url LIKE "'.$url.'%"'; + my $query = 'SELECT * FROM metadata WHERE url LIKE "'.$url.'%"'; my $server = &Apache::lonnet::homeserver($author,$authordom); my $reply = &Apache::lonnet::metadata_query($query,undef,undef, ,[$server]); @@ -106,13 +95,9 @@ sub get_dynamic_metadata_from_sql { while (my $result = <$fh>) { chomp($result); next if (! $result); - my @Data = - map { - &Apache::lonnet::unescape($_); - } split(',',$result); - my $url = $Data[0]; - for (my $i=0;$i<=$#Fields;$i++) { - $ReturnHash{$url}->{$Fields[$i]}=$Data[$i]; + my %hash=&LONCAPA::lonmetadata::metadata_col_to_hash(map { &unescape($_) } split(/\,/,$result)); + foreach my $key (keys(%hash)) { + $ReturnHash{$hash{'url'}}->{$key}=$hash{$key}; } } $finished = 1; @@ -296,25 +281,52 @@ 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,'/'); + 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); } $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'; + } + if ($env{'form.group'} ne $group) { + $env{'form.group'} = $group) { + } + 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 { @@ -322,10 +334,9 @@ sub portfolio_display_uri { } 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); } @@ -350,8 +361,10 @@ 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('

'. ''. + ''. ''. '
'); @@ -486,7 +499,9 @@ sub prettyprint { my @Courses = split(/\s*\,\s*/,$value); my $Str='