--- loncom/interface/lonmeta.pm 2005/12/19 21:17:25 1.144
+++ 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.144 2005/12/19 21:17:25 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 =
@@ -290,24 +297,71 @@ sub fieldnames {
return &Apache::lonlocal::texthash(%fields);
}
-sub portfolio_display_uri {
+sub portfolio_linked_path {
+ 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($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';
}
- return ($res_uri,$meta_uri);
+
+ my ($path) = ($res_uri =~ m|^portfolio(.*/)[^/]*$|);
+ if ($as_links) {
+ $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);
}
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 +376,42 @@ sub pre_select_course {
$r->print($output.'
');
$r->print('');
+
+ my ($port_path,$group) = &get_port_path_and_group($uri);
+ $r->print('