--- loncom/interface/lonmeta.pm 2006/05/20 06:34:50 1.155 +++ loncom/interface/lonmeta.pm 2006/05/31 17:44:14 1.158 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Metadata display handler # -# $Id: lonmeta.pm,v 1.155 2006/05/20 06:34:50 albertel Exp $ +# $Id: lonmeta.pm,v 1.158 2006/05/31 17:44:14 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,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; @@ -318,10 +303,12 @@ sub portfolio_linked_path { return $result; } -sub portfolio_display_uri { - my ($uri,$as_links)=@_; +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]; @@ -329,6 +316,14 @@ sub portfolio_display_uri { } 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$/) { @@ -365,8 +360,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('

'. ''. + ''. ''. '
'); @@ -1284,8 +1281,10 @@ ENDEDIT &mt('Store Catalog Information').'">'); if ($file_type eq 'portfolio') { + my ($port_path,$group) = &get_port_path_and_group($uri); $r->print(' -

'. +

'. + ''. ''. ''); }